사용자 도구

사이트 도구


java:jpa:entity_listener

Entity Listener

  • 엔티티의 저장 전/후, 삭제 전/후, 수정 전/후 작업을 지정할 수 있다.
  • 예. 엔티티 저장시마다 createdAt 필드에 현재 시간을 지정
    // Entity가 Creatable 인터페이스를 구현하고 있다고 간주
    public class CreatableListener {
      @PrePersist
      public void create(final Creatable entity) {
        entity.setCreatedAt(new Date());
      }
    }
  • create datetime, update datetime 관련 문제는 JPA Date Time 참고.

Hook 종류

  • PostLoad
  • PostPersist
  • PostRemove
  • PostUpdate
  • PrePersist
  • PreRemove
  • PreUpdate

Bean Container

  • Hibernate 5.3 부터 EntityListener 와 AttributeConverters 에 대해 CDI bean 지원. (즉, Spring Framework등에서 bean 으로 EntityListener와 AttributeConverters 를 생성해준 것을 사용가능해짐.

주의점

  • PostPersist를 사용해 매핑된 필드를 수정하면 엔티티 save(insert) 후에 변경된 필드에 대한 update 가 발생하게 된다. 매우 주의해서 사용해야 한다.
java/jpa/entity_listener.txt · 마지막으로 수정됨: 2021/10/22 12:39 저자 kwon37xi