EntityListeners?
Entity가 삽입, 삭제, 수정, 조회 등의 작업을 할 때 전, 후에 작업을 하기 위한 어노테이션
@PrePersist
Persist(Insert) 메서드가 호출되기 전에 실행되는 메서드
@PreUpdate
Merge(Update) 메서드가 호출되기 전에 실행되는 메서드
@PreRemove
Remove(Delete) 메서드가 호출되기 전에 실행되는 메서드
@PostPersist
Persist(Insert) 메서드가 호출된 후에 실행되는 메서드
@PostUpdate
Merge(Update) 메서드가 호출된 후에 실행되는 메서드
@PostRemove
Remove(Delete) 메서드가 호출된 후에 실행되는 메서드
@PostLoad
Select 조회가 실행된 직후에 실행되는 메서드
Example
데이터가 삽입되기 전, 수정되기 전 createdAt과 updatedAt 시간을 조작해야 합니다.
@SpringBootApplication
**@EnableJpaAuditing**
public class SampleApplication {
public static void main(String[] args) {
SpringApplication.run(SampleApplication.class, args);
}
}
Spring Data JPA에서 제공하는 Auditing 기능을 제공하기 위해, 엔티티에 변경시점 감지를 위한 어노테이션을 붙여줍니다.
@Setter
@Getter
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class) // AuditingEntityListener.class를 EntityListners로 등록
@Slf4j
public abstract class BaseEntity {
@CreatedDate
@Temporal(TemporalType.TIMESTAMP)
private LocalDateTime createdAt;
@CreatedBy
private Long createdBy;
@LastModifiedDate
@Column
@Temporal(TemporalType.TIMESTAMP)
private LocalDateTime updatedAt;
@LastModifiedBy
private Long updatedBy;
@Column
@Temporal(TemporalType.TIMESTAMP)
private LocalDateTime deletedAt;
@Column(updatable = false)
private Long deletedBy;
...
}