Pre Post Annotation

1 분 소요

Pre & Post Annotation 이란?


  • Entity의 Lifecycle 중에 영속화, 업데이트, 삭제 이벤트 전후에 실행되는 callback method
  • Pre & Post Annotation을 통해서 Entity의 Lifecycle에서 추가적인 작업처리가 가능함
  • Pre Annotation : Entity의 Lifecycle 이벤트 전에 실행되도록 하는 annotation
  • Post Annotation : Entity의 Lifecycle 이벤트 후에 실행되도록 하는 annotation



Pre Annotation의 종류


@PrePersist

  • Entity가 영속화되기 전에 호출되는 method
  • Entity가 Database에 저장되기 전에 추가적인 초기화 작업을 수행할 수 있음

@PreUpdate

  • Entity가 update되기 전에 호출되는 method
  • Entity가 Database에 update되기 전에 추가적인 작업을 수행할 수 있음

@PreRemove

  • Entity가 remove되기 전에 호출되는 method
  • Entity가 Database에서 remove되기 전에 추가적인 작업을 수행할 수 있음


Example Code ( Post Annotation )


Entity에 Persist, Update, Remove가 발생하기 전에 항상 이루어져야 되는 작업이 있을 떄 사용

@Entity
public class PreExample {
    @Id
    @GeneratedValue
    private Long id;
    
    private String content;
    
    @PrePersist
    public void prePersist() {
        System.out.println("Entity 영속화 성공")
    }
    
    @PreUpate
    public void preUpdate() {
        System.out.println("Entity Update 성공")
    }
    @PreRemove
    public void preRemove() {
        System.out.println("Entity Remoeve 성공")
    }
}



Post Annotation의 종류


@PostPersist

  • Entity가 영속화된 후에 호출되는 method
  • Entity가 Database에 저장된 후에 추가적인 초기화 작업을 수행할 수 있음

@PostUpdate

  • Entity가 update된 후에 호출되는 method
  • Entity가 Database에 update된 후에 추가적인 작업을 수행할 수 있음

@PostRemove

  • Entity가 remove된 후에 호출되는 method
  • Entity가 Database에서 remove된 후에 추가적인 작업을 수행할 수 있음

Example Code ( Post Annotation )


Entity에 Persist, Update, Remove가 발생한 후에 항상 이루어져야 되는 작업이 있을 떄 사용

@Entity
public class PostExample {
    @Id
    @GeneratedValue
    private Long id;
    
    private String content;
    
    @Postpersist
    public void postPersist() {
        System.out.println("Entity 영속화 전")
    }
    
    @PostUpate
    public void postUpdate() {
        System.out.println("Entity Update 전")
    }
    @PostRemoev
    public void postRemove() {
        System.out.println("Entity Remove 전")
    }
}