2014-04-08 4 views
1

내 응용 프로그램은 FlushMode.AUTO을 사용합니다. 특정 서비스 메소드 호출에 대해 Hibernate Session을 변경하려고합니다. FlushMode ~ FlushMode.COMMIT으로 변경하고 메서드 완료시 FlushMode.AUTO으로 되돌립니다.세션 중에 최대 절전 모드 Session.FlushMode 변경

질문 : - 세션 중에 FlushMode를 변경하는 데 문제가 있습니까? 나는 감사의 변화에 ​​대한 최대 절전 모드 인터셉터 접근법 (onFlushDirty)을 사용하고 있습니다 : - 세션 동안 FlushMode을 변경

이유. FlushMode.AUTO를 사용하면 다중 세션 플러시가 발생하고 있습니다 (동작은 FlushMode.AUTO). 결과적으로 onFlushDirty이 여러 번 호출되어 중복 감사가 발생합니다. 위의 문제 해결 방법은 FlushModeCOMMIT으로 변경하여 감사가 발생할 것으로 예상되는 방법입니다.

답변

0

자동 플러시를 트리거하는 가장 일반적인 이유는 실행 중에 쿼리를 실행할 때입니다. Hibernate가 세션에서 비 플러시 된 변경 사항 중 일부가 쿼리 결과에 영향을 줄 수 있음을 감지하면 자동으로 플러시를 트리거합니다. 쿼리가 실행될 때 세션에서 변경 한 내용과 일치하는 데이터를 가져옵니다.

코드에 따라 다릅니다. 이 동작이 기능에 영향을 미치지 않으면 확인해야합니다.

관련 문제