Spring 개발일지

[대규모 AI 시스템 프로젝트] MSA에서 공통 코드 관리하기 (2)

김둘리 2026. 3. 31. 09:29

 

일단 common에 공통으로 사용하는 코드를 작성해주었다

 

나는 BaseEntity에는 생성일, 수정일, 삭제일의 시간을, 

BaseUserEntity에는 생성자, 수정자, 삭제자의 사람을 저장하도록 하였다.

 

package com.qpang.common.entity;


import jakarta.persistence.Column;
import jakarta.persistence.EntityListeners;
import jakarta.persistence.MappedSuperclass;
import lombok.Getter;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;


import java.time.LocalDateTime;


@Getter
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public abstract class BaseEntity {


    @CreatedDate
    @Column(updatable = false)
    protected LocalDateTime createdAt;


    @LastModifiedDate
    protected LocalDateTime updatedAt;


    protected LocalDateTime deletedAt;
}



package com.qpang.common.entity;


import jakarta.persistence.Column;
import jakarta.persistence.EntityListeners;
import jakarta.persistence.MappedSuperclass;
import lombok.Getter;
import org.springframework.data.annotation.CreatedBy;
import org.springframework.data.annotation.LastModifiedBy;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;


import java.time.LocalDateTime;


@Getter
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public abstract class BaseUserEntity extends BaseEntity {


    @CreatedBy
    @Column(updatable = false)
    protected Long createdBy;


    @LastModifiedBy
    protected Long updatedBy;


    protected Long deletedBy;


    // soft delete
    public void delete(Long userId) {
        this.deletedBy = userId;
        this.deletedAt = LocalDateTime.now();
    }
}

 

softDelete 관련해서 수정할 사항이 있을수도 있지만 일단 지금은 개발시간이 촉박하기때문에 softDelete로 어느정도 돌아가는것처럼 보여서 다음 단계로 넘어갔다.

 

common 코드를 사용하기 위해서는 common 코드가 빌드가 되어서 jar형태로 라이브러리화 되어야하는데 지금 그 부분에서 에러가 나서 고치는중 !