0

Spring은 트랜잭션 컨텍스트의 끝에서 각 엔티티에 대한 엔티티 또는 엔티티 수신기의 메소드를 호출하기위한 후크를 가지고 있습니까?Entity가 @Transactional 컨텍스트를 종료하면 스프링 콜백이 발생합니까?

우리는 Spring과 Hibernate를 사용하여 검색을 위해 색인을 생성하는 항목들을 관리합니다. 우리는 현재 Hibernate의 @PreUpdate 메소드를 가진 엔티티 리스너를 사용하여 엔티티가 생성되거나 수정 될 때 다시 색인을 수행한다. 물론이 이벤트는 하나 이상의 엔터티 자체 속성 (즉, 데이터베이스 행의 값)이 업데이트 될 때만 발생합니다.

엔티티가 단순한 자식 속성에 대해 @OneToMany 매핑을 가지고있을 때 문제가 발생합니다. 이러한 하위 속성 중 하나가 업데이트되면 부모 업데이트에 대해 이 아닌이 호출됩니다.

속성이 업데이트 될 때 이미 추적했지만, 다시 색인을 실행하기 전에 모든 업데이트가 완료 될 때까지 기다려야합니다 ( ). 그런 재 색인 호출을 넣는 가장 좋은 장소는 무엇입니까? PreUpdate는 대부분의 경우에 잘 작동하지만이 주름은 엔티티가 @Transactional 범위를 벗어날 때 갈고리가 있는지 궁금하게 만든다. 또는 OneToMany 자식이 지속될 때 부모에 대한 콜백을 트리거하는 최대 절전 모드 방법이 있습니까?

답변

1

나는 aspect가 구조를위한 것이라고 생각한다. 이 기사는 Spring 문서에서 트랜잭션 작업 Advising transactional operations에 대한 조언을 제공하여 @Transactional 메서드와 관련된 부분을 작성하고 인덱싱을 수행하는 데 도움이됩니다.

관련 문제