1. PrePersist의 약어와 한글 번역
- 약어:
- PrePersist를 풀어보면 다음과 같이 해석할 수 있습니다:
- Pre: "이전에" (Before)
- Persist: "영속화" 또는 "저장" (Persist)
- PrePersist를 풀어보면 다음과 같이 해석할 수 있습니다:
- 한글 번역:
- @PrePersist를 한글로 번역하면 **"저장되기 직전에"**라는 의미입니다.
- 이 어노테이션은 엔티티 객체가 데이터베이스에 **영속적으로 저장(persist)**되기 직전에 특정 로직을 실행한다는 것을 의미합니다.
예를 들어 설명하자면
@PrePersist는 저장 직전에 실행되는 메서드를 지정하기 위해 사용되므로, 엔티티가 처음 데이터베이스에 저장되기 전에 수행해야 하는 작업을 설정할 때 활용됩니다.
2.@PrePersist 어노테이션의 역할
@PrePersist는 JPA 라이프사이클 콜백(Lifecycle Callback) 중 하나로, 엔티티가 영속성 컨텍스트에 저장되기 전에 실행되는 메서드를 지정하는 어노테이션입니다.
즉, 엔티티 객체가 persist() 호출로 처음 데이터베이스에 저장되기 직전에 특정 로직을 실행하고 싶을 때 사용합니다.
3.주요 특징
- 호출 시점:
- EntityManager.persist(entity)가 호출되거나, 트랜잭션이 커밋되면서 새로운 엔티티가 데이터베이스에 저장되기 직전에 실행됩니다.
- 사용 목적:
- 엔티티가 데이터베이스에 저장되기 전에 초기화 작업이나 기본값 설정을 수행할 수 있습니다.
- 예를 들어, createdDate와 같은 생성 타임스탬프를 자동으로 설정하는 데 자주 사용됩니다.
- 적용 대상:
- @Entity 클래스 내에서 선언된 메서드에만 사용 가능합니다.
- 메서드는 매개변수가 없어야 하고, 반환값이 없어야 하며, public 또는 protected로 선언되어야 합니다.
4.예제
@Entity
public class ExampleEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false, updatable = false)
private Timestamp createdDate;
@Column(nullable = false)
private Timestamp lastUpdateDate;
@PrePersist
protected void onCreate() {
Timestamp now = new Timestamp(System.currentTimeMillis());
this.createdDate = now; // 데이터 생성 시 시간 설정
this.lastUpdateDate = now; // 생성 시 최종 업데이트 시간도 동일하게 설정
}
}
동작 원리
- ExampleEntity가 JPA의 persist() 메서드로 저장 요청을 받으면,
- onCreate() 메서드가 자동으로 실행됩니다.
- createdDate와 lastUpdateDate가 설정된 후 데이터베이스에 저장됩니다.
'Spring - Spring Boot' 카테고리의 다른 글
Spring 과 톰캣 (1) | 2025.01.08 |
---|---|
Spring - Spring Boot - Swagger 설정하기 (0) | 2024.12.12 |
Spring Security - 2 - Bean 등록 (1) | 2024.12.04 |
Spring Security - 1 - 설정 (2) | 2024.12.04 |