@PrePersist
@Column(name = "created_at")
private LocalDateTime createdAt;
@PrePersist
void createdAt() {
this.createdAt = LocalDateTime.now();
}
엔티티가 생성될 때마다 실행되어야 하는 로직을 구현하는 데 사용되며, 엔티티가 생성될 때마다 현재 날짜를 값으로 설정하는 로직 등을 구현할 수 있습니다.
또한, 위의 이미지같이 JPA 엔티티(entity)가 비영속 상태에서 영속 상태가 되는 시점 이전에 실행이 되게 됩니다.
@PreUpdate
@Column(name = "modified_at")
private LocalDateTime modifiedAt;
@PreUpdate
void modifiedAt() {
this.modifiedAt = LocalDateTime.now();
}
엔티티가 업데이트될 때마다 실행되어야 하는 로직을 구현하는 데 사용되며, 엔티티가 업데이트될 때마다 변경된 값을 기록하는 로직 등을 구현할 수 있습니다.
또한, 위의 이미지같이 영속 상태인 엔티티의 변경 사항이 데이터베이스에 반영되는 시점 이전에 실행이 되게 됩니다.
🏷️ 사용법
두 어노테이션을 추가한 메소드는 엔티티가 데이터베이서에 영속화 되기 전에 실행되며, 다음과 같은 작업을 수행할 수 있습니다.
- 데이터 무결성을 보장하기 위해 특정 엔티티 필드의 값이 조건을 만족하지 못 하는 경우 예외를 발생시킬 수 있습니다.
- 엔티티의 필드 값을 암호화하거나 사용자의 권한을 확인하는 작업을 수행할 수 있습니다.
- 엔티티 필드 값이 변경될 때마다 이를 일관성 있게 처리하거나 데이터를 검증할 수 있습니다.
📖 Reference
'코딩 공부 > web & Java' 카테고리의 다른 글
[Mockito] ArgumentMatchers 및 any,eq (1) | 2024.10.21 |
---|---|
[JPA] @GeneratedValue의 GenerationType에 AUTO, IDENTITY 차이 (0) | 2024.10.17 |
[Spring / Redis] Spring에서 Redis 사용 (0) | 2024.10.10 |
[Spring / WebSocket] WebSocket와 STOMP (0) | 2024.10.05 |
[Spring / SSE] SSE(Server Sent Event) (1) | 2024.10.04 |