본문 바로가기
개발자의 정보/Java & framework

데이터 변경 알림 - @EntityListeners

by pastory 2020. 2. 11.

spring 의 data-jpa 사용시 데이터 변경시 알림을 받는 방법이 있다.

 

EntityListener 클래스를 만들고

public class DataDtoListener {
    
    @PostLoad
    public void postLoad(DataDto dto) {
        log.info("post load: {}", dto);
    }
    
    @PrePersist
    public void prePersist(DataDto dto) {
        log.info("pre persist: {}", dto);
    }
    
    @PostPersist
    public void postPersist(DataDto dto) {
        log.info("post persist: {}", dto);
    }
    
    @PreUpdate
    public void preUpdate(DataDto dto) {
        log.info("pre update: {}", dto);
    }
    
    @PostUpdate
    public void postUpdate(DataDto dto) {
        log.info("post update: {}", dto);
    }
    
    @PreRemove
    public void preRemove(DataDto dto) {
        log.info("pre remove: {}", dto);
    }
    
    @PostRemove
    public void postRemove(DataDto dto) {
        log.info("post remove: {}", dto);
    }
}

 

@Entity 클래스에 @EntityListeners를 등록 하는 것이다.

@EntityListeners(DataDtoListener.class)
@Entitty
@Table(name="table_name")
public class DataDto() {
   @Id
   private long id;
   ...
}

 

EntityListener 클래스에 적용한 이벤트는 다음 시점에 호출된다.

  • @PostLoad: 해당 엔티티를 새로 불러오거나 refresh 한 이후.
  • @PrePersist: 해당 엔티티를 저장하기 이전
  • @PostPersist: 해당 엔티티를 저장한 이후
  • @PreUpdate: 해당 엔티티를 업데이트 하기 이전
  • @PostUpdate: 해당 엔티티를 업데이트 한 이후
  • @PreRemove: 해당 엔티티를 삭제하기 이전
  • @PostRemove: 해당 엔티티를 삭제한 이후

 

 

댓글