본문 바로가기
개발

BaseEntity 생성하기

by 공덕뉸나 2023. 8. 19.

엔티티를 만들 때 생성일, 수정일, 생성자, 수정자 필드가 공통으로 들어가는데 매번 엔티티를 생성할 때 마다 작성해주지 않고 공통적으로 처리해주기 위해 BaseEntity를 만들어 사용했다.

 

@Setter
@Getter
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public class BaseEntity {
    @CreatedBy
    @Column(updatable = false)
    protected Long createdBy;

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

    @LastModifiedBy
    @Column
    protected Long modifiedBy;

    @LastModifiedDate
    @Column
    protected LocalDateTime modifiedDate;
}

 

- @MappedSuperClass

이 어노테이션은 상속의 일종이다. 

이 어노테이션이 있는 클래스는 엔티티로 사용되지 않고 다른 엔티티에서 이 엔티티의 속성을 상속받아 속성만 사용할 수 있게 도와준다.

 

- @EntityListeners(AuditingEntityListener.class)

Audit은 DB를 관리하기 편하도록 DB에 값을 넣을 때, 항상 특정 데이터가 포함되도록 하는 것이다.

Auditing을 적용할 엔티티 클래스에 @EntityListeners 어노테이션을 적용해야한다.

이 어노테이션은 아래 필드의 특정 Audit 컬럼에 이벤트가 있을 때마다 Audit이 반영될 준비를 해준다.

 

- @CreatedDate

등록시간을 의미한다.

 

- @LastModifiedDate

마지막 수정시간을 의미한다.

 

- @CreatedBy

등록자를 의미한다.

 

- @ModifiedBy

수정자를 의미한다.

 

이 어노테이션을 달아주면, 이 엔티티를 상속받아 사용하는 클래스에서 Audit이 발생할 때 자동적으로 Audit을 해준다.

(참고 - https://ojt90902.tistory.com/711#h_2)

 

실무를 하면서 BaseEntity를 처음 사용하며 어노테이션들을 처음 접하게 되어 그동안 같은 필드들을 매번 정의했던 때가 생각이 났었다.

알아가는 것도 너무 많고 공부해야할 것도 너무 많은 것 같다.

프로젝트를 진행하면서 익숙하게 사용했지만 개념에 대해 확실히 알지 못하거나 왜 이렇게 사용했지 의문이 드는 것들을 하나하나 찾아보며 기록 할 생각이다.

노션을 사용하고 블로그를 쓰면서 이전까지 노트에 필기하며 공부했던게 조금은 후회가 됐다,, 

오늘도 이제부터라도 꾸준히 기록해야지 다짐하는 날이었다. 망망~!

 

 

 

 

'개발' 카테고리의 다른 글

JWT 활용한 로그인 구현 - 1  (0) 2023.08.30
Enum 생성  (1) 2023.08.23
엔티티 생성  (0) 2023.08.18
도메인 설계  (0) 2023.08.17
파일럿 프로젝트 시작하기 - 프로젝트 세팅  (0) 2023.08.16