요번 프로젝트를 하면서 BaseTimeEntity라는 클래스를 처음으로 만들어서
시간을 찍는 기능을 따로 추상클래스로 나누어보았다.
이때 사용되는 새로운 어노테이션이
1. @MappedSuperClass
2. @EntityListeners(AuditingEntityListener.class),
3. @EnableJpaAuditing였는데
@MappedSuperClass 는 => 추상클래스는 여러 클래스에 상속이 될수 있으니까 테이블에 직접 매핑이 되지 않고 공통적인 매핑정보만 주는 녀석임을 알려주는 어노테이션으로 이해가 되었는데
@EntityListeners(AuditingEntityListener.class), @EnableJpaAuditing는 약간 이해가 애매했다.
그래서 들고 파보고자 한다.
예상 : 우선 Auditing이란 단어가 둘다 들어가서 이 단어 뜻이 무엇일까 찾아보았다
그러니까 약간 DB에 어떤걸 감찰하는..? 느낌인듯 하다
@EntityListeners(AuditingEntityListener.class)는 감찰대상에 올리는 느낌...?
@EnableJpaAuditing은 감찰을 활성화 시키는 느낌..?
정답
@EntityListeners는 엔티티 생명주기 이벤트(생성, 수정, 삭제)에 대한 리스너 클래스를 지정하고 그에 따른 로직을 실행합니다.
@EntityListeners(AuditingEntityListener.class) 와 같은 경우는
인데.....null인 경우 예외를 발생시키는거 같다
@EnableJpaAuditing는 JPAAuditing을 활성화 시키는 어노테이션이다.
JPA Auditing은 엔티티의 생성일자, 수정일자 등과 같은 정보를 자동으로 관리하는 기능.
=> 각 엔티티에 대해 생성일자와 수정일자를 직접 설정하거나 갱신할 필요 없이, @CreatedDate, @LastModifiedDate 와 같은 어노테이션으로 생성일자와 수정일자를 자동으로 관리할 수 있다.
'Spring Boot' 카테고리의 다른 글
[Spring] Entity 클래스에선 왜 Public, Private 의 @NoArgsConstructor가 필요 할까? (0) | 2024.04.10 |
---|---|
[Spring] 유효성 검사는 DTO에서 하는게 좋을까 Entity에서 하는게 좋을까? (feat. @NotBlank, @Size) (0) | 2023.05.24 |