강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của tjdgh03125269
tjdgh03125269

câu hỏi đã được viết

Triển khai dự án mẫu API dựa trên Spring Boot để cải thiện năng suất

Cài đặt kiểm tra JPA

auditing

Viết

·

53

0

@EntityListeners(AuditingEntityListener.class) 

저걸안쓰는이유가무엇인가요?

저렇게 직접구현하는이유가

spring-bootjpaweb-api

Câu trả lời 1

0

bgh79465479님의 프로필 이미지
bgh79465479
Người chia sẻ kiến thức

@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;

}
Hình ảnh hồ sơ của tjdgh03125269
tjdgh03125269

câu hỏi đã được viết

Đặt câu hỏi