Spring은 트랜잭션 컨텍스트의 끝에서 각 엔티티에 대한 엔티티 또는 엔티티 수신기의 메소드를 호출하기위한 후크를 가지고 있습니까?Entity가 @Transactional 컨텍스트를 종료하면 스프링 콜백이 발생합니까?
우리는 Spring과 Hibernate를 사용하여 검색을 위해 색인을 생성하는 항목들을 관리합니다. 우리는 현재 Hibernate의 @PreUpdate 메소드를 가진 엔티티 리스너를 사용하여 엔티티가 생성되거나 수정 될 때 다시 색인을 수행한다. 물론이 이벤트는 하나 이상의 엔터티 자체 속성 (즉, 데이터베이스 행의 값)이 업데이트 될 때만 발생합니다.
엔티티가 단순한 자식 속성에 대해 @OneToMany 매핑을 가지고있을 때 문제가 발생합니다. 이러한 하위 속성 중 하나가 업데이트되면 부모 업데이트에 대해 이 아닌이 호출됩니다.
속성이 업데이트 될 때 이미 추적했지만, 다시 색인을 실행하기 전에 모든 업데이트가 완료 될 때까지 기다려야합니다 ( ). 그런 재 색인 호출을 넣는 가장 좋은 장소는 무엇입니까? PreUpdate는 대부분의 경우에 잘 작동하지만이 주름은 엔티티가 @Transactional 범위를 벗어날 때 갈고리가 있는지 궁금하게 만든다. 또는 OneToMany 자식이 지속될 때 부모에 대한 콜백을 트리거하는 최대 절전 모드 방법이 있습니까?