@PrePersist

정의

@PrePersistJPA 엔티티가 영속화되기 직전에 실행되는 콜백 애너테이션이다. INSERT 전에 초기값 설정이나 로그 처리 같은 작업을 수행할 때 사용한다.

저장 직전에 필요한 값을 채우거나 생성 시각, 상태값을 초기화할 때 유용하다.

🧩 역할

  • 엔티티 저장 직전에 로직을 실행한다
  • 기본값 초기화에 사용된다
  • 생성일 자동 등록 같은 작업에 활용된다
  • 엔티티 내부 또는 리스너에서 사용할 수 있다

🛠 사용법

엔티티 내부에서 사용

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.PrePersist;
import javax.persistence.Table;

@Entity
@Table(name = "COM_VAR")
public class CommonVariable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String variableValue;

    @PrePersist
    public void beforeSave() {
        if (variableValue == null) {
            this.variableValue = "DEFAULT";
        }
    }
}

엔티티 리스너와 함께 사용

import javax.persistence.PrePersist;

public class AuditListener {

    @PrePersist
    public void beforeInsert(Object obj) {
        System.out.println("객체가 저장되기 전 실행: " + obj);
    }
}
@Entity
@EntityListeners(AuditListener.class)
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String name;
}

⚠️ 주의사항

  • 콜백 로직은 단순하게 유지하는 것이 좋다.
  • 너무 많은 비즈니스 로직을 넣으면 엔티티 책임이 커질 수 있다.
  • @EntityListeners와 함께 사용할 수도 있다.
  • 생성 시각을 기록할 때는 @EnableJpaAuditing이나 @CreationTimestamp와 역할이 겹치지 않도록 정리하는 것이 좋다.

📌 정리

  • @PrePersist는 저장 직전에 실행되는 JPA 콜백 애너테이션이다.
  • 기본값 초기화나 저장 전 처리에 적합하다.
  • 엔티티 내부와 리스너 둘 다에서 사용할 수 있다.

연결문서

태그: ,

카테고리:

업데이트:

댓글남기기