BaseEntity

HR·2023년 11월 11일
0

Spring

목록 보기
4/5

엔티티를 생성하다보면 공통적으로 사용되는 속성들이 생겨난다. 예를 들어 ID, 생성 시간, 수정 시간과 같은 속성이 있는데, BaseEntity에 공통적으로 사용되는 필드나 메소드를 정의하고 사용한다면 코드 중복을 방지하고 유지보수성을 향상시킬 수 있다.

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

    @CreatedDate
    private LocalDateTime createdDate;

    @LastModifiedDate
    private LocalDateTime lastModifiedDate;

    @CreatedBy
    private String createdBy;

    @LastModifiedBy
    private String lastModifiedBy;
}

어노테이션 정리

  • @MappedSuperclass : 공통 매핑 정보가 필요할 때, 부모 클래스에 선언하고 속성만 상속 받아서 사용하고 싶을 때 사용. 해당 어노테이션이 적용된 BaseEntity를 상속받은 엔티티는 BaseEntity에 있는 멤버변수들을 모두 컬럼으로 인식한다.
  • @EntityListeners(AuditingEntityListener.class): 엔티티의 영속, 수정 이벤트를 감지하는 역할을 한다. 사용할 때 Application에 @EnableJpaAuditing 어노테이션을 추가해줘야함.
  • @CreatedDate: 엔티티가 생성되어 저장될 때 시간이 자동 저장된다.
  • @LastModifiedDate : 엔티티의 값을 변경할 때 시간이 자동 저장된다.
  • @CreatedBy, @LastModifiedBy도 비슷하게 진행됨.

Java Date 표현 속성들 정리

  • LocalDate : 타임존이 필요없는 날짜 정보를 나타낼 때 사용. ex) 2023-11-11
  • LocalTime : 타임존 개념이 필요없는 시간 정보를 나타낼 때 사용. ex) 13:01:33.333
  • LocalDateTime : LocalDate + LocalTime. 날짜, 시간 정보 모두 나타낼 때 사용한다. ex) 2023-11-11T13:01:33.333

BaseEntity 상속받기

public class childEntity extends BaseEntity {

extends로 BaseEntity를 상속받아올 수 있음!

profile
Hello World :D

0개의 댓글