https://s3-us-west-2.amazonaws.com/secure.notion-static.com/d1c1456a-8834-4167-8e5e-60337bb7c166/

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 클래스에 적용한 이벤트는 다음 시점에 호출된다.