====== Entity Listener ====== * [[http://docs.oracle.com/javaee/6/api/javax/persistence/EntityListeners.html|@EntityListeners]] * 엔티티의 저장 전/후, 삭제 전/후, 수정 전/후 작업을 지정할 수 있다. * 예. 엔티티 저장시마다 createdAt 필드에 현재 시간을 지정 // Entity가 Creatable 인터페이스를 구현하고 있다고 간주 public class CreatableListener { @PrePersist public void create(final Creatable entity) { entity.setCreatedAt(new Date()); } } * create datetime, update datetime 관련 문제는 [[java:jpa:datetime|JPA Date Time]] 참고. ===== Hook 종류 ===== * PostLoad * PostPersist * PostRemove * PostUpdate * PrePersist * PreRemove * PreUpdate ===== Bean Container ===== * Hibernate 5.3 부터 EntityListener 와 AttributeConverters 에 대해 CDI bean 지원. (즉, [[:springframework|Spring Framework]]등에서 bean 으로 EntityListener와 AttributeConverters 를 생성해준 것을 사용가능해짐. ===== 주의점 ===== * ''PostPersist''를 사용해 매핑된 필드를 수정하면 엔티티 save(insert) 후에 변경된 필드에 대한 update 가 발생하게 된다. 매우 주의해서 사용해야 한다.