작성
·
27
0
@EntityListeners(AuditingEntityListener.class)
저걸안쓰는이유가무엇인가요?
저렇게 직접구현하는이유가
답변 1
0
@EntityListeners(value = {AuditingEntityListener.class}) 어노테이션의 경우 현재 BaseEntity, BaseTimeEntity 클래스에 선언해두었습니다.
해당 어노테이션 사용 시 jpa의 이벤트가 발생할 때 추가로 처리를할 수 있도록 도와주는 기능입니다.
@CreatedDate, @LastModifiedDate 어노테이션을 생성시간과 업데이트시간 필드에 선언해두었는데 저장 및 업데이트 시 해당 리스너에 의해서 생성 시간과 업데이트 시간이 세팅되서 db에 저장된다고 봐주시면됩니다.
@EntityListeners(value = {AuditingEntityListener.class})
@MappedSuperclass
@Getter
public abstract class BaseTimeEntity {
@CreatedDate
@Column(updatable = false)
private LocalDateTime createTime;
@LastModifiedDate
private LocalDateTime updateTime;
}
BaseEntity의 경우 등록자와 수정자 필드를 가지고 있는데 스프링 빈으로 등록한 AuditorAwareImpl 에 의해서 현재 요청한 API의 URI 정보를 자동으로 등록해줍니다.
이런 편의 기능 덕분에 저희가 코드상에서 직접 생성시간/수정시간/등록자/수정자를 세팅하는 번거로움을 덜 수 있습니다.
@EntityListeners(value = {AuditingEntityListener.class})
@MappedSuperclass
@Getter
public abstract class BaseEntity extends BaseTimeEntity {
@CreatedBy
@Column(updatable = false)
private String createdBy;
@LastModifiedBy
private String modifiedBy;
}