@PrePersist
는 엔티티가 처음으로 영속성 컨텍스트에 저장되기 전에 호출됩니다. 주로 엔티티 생성 시 초기값을 설정하거나, 자동으로 설정해야 할 필드를 처리할 때 사용됩니다.
사용 예시:
import jakarta.persistence.*;
import java.time.LocalDateTime;
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private LocalDateTime createdAt;
private LocalDateTime updatedAt;
// 엔티티가 영속성 컨텍스트에 저장되기 전에 호출됨
@PrePersist
protected void onCreate() {
this.createdAt = LocalDateTime.now();
}
// Getter, Setter, 기타 메서드들
}
위 코드에서 onCreate()
메서드는 @PrePersist
로 마킹되어, User
엔티티가 처음 저장될 때 createdAt
필드를 현재 시간으로 설정합니다.
@PostPersist
는 엔티티가 영속성 컨텍스트에 저장된 후에 호출됩니다. 데이터베이스에 저장된 후 추가 작업이 필요할 때 사용됩니다.
사용 예시:
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
// 엔티티가 영속성 컨텍스트에 저장된 후 호출됨
@PostPersist
protected void afterPersist() {
System.out.println("User entity persisted with ID: " + this.id);
}
// Getter, Setter, 기타 메서드들
}
여기서는 User
엔티티가 데이터베이스에 저장된 후에 afterPersist()
메서드가 호출되어 콘솔에 메시지를 출력합니다.
@PreUpdate
는 엔티티가 수정되기 전에 호출됩니다. 수정 전에 데이터의 유효성을 검증하거나, 수정 시간을 기록하는 데 사용할 수 있습니다.
사용 예시:
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private LocalDateTime updatedAt;
// 엔티티가 수정되기 전에 호출됨
@PreUpdate
protected void onUpdate() {
this.updatedAt = LocalDateTime.now();
}
// Getter, Setter, 기타 메서드들
}