2014-07-21 7 views
-1

나는 최대 절전 모드와 봄철을 사용하는 자바로 웹 어플리케이션을 작성했다.Tomcat 세션의 Hibernate 엔티티

내 응용 프로그램에서 하나의 큰 동면 한 엔터티를로드하고 Tomcat 세션 (마법사와 같은)에 다시 첨부하고 마지막으로이 수정 된 엔터티를 저장해야합니다.

세션을 최대 절전 모드로 설정하기 위해 엔티티를 연결하고 다시 첨부 할 수 있습니까?

사실, 모든 하위 엔티티를 fetchMode EAGER로 매핑해야합니다. 그렇지 않으면 lazyinitializationexception이 있습니다. "hibernateSession.lock (entity, LockMode.NONE)"시도했지만 작동하지 않습니다.

두 번째 문제는 엔터티를 저장하는 일입니다. 사실 엔터티 DAO에서 병합 메서드를 호출하기 전에 DataBase에서 엔티티를 다시로드해야하고 병합 엔티티 후에 엔티티의 데이터가 삭제되지 않습니다. 저에게 이상한 소리가 들립니다!

의견이 있으십니까?

미리 감사드립니다.

답변

0

웹 세션은 최대 절전 모드와 완전히 별개입니다. 엔티티 (및 그 하위 구성 요소)를 직렬화 한 다음 변경된 엔티티를 다시 비 직렬화 할 것입니다.

가리키고, 전에 개체 DAO에 병합 메소드를 호출, 나는 데이터베이스 잘못

에서 개체를 다시로드 필요 병합 :

복사의 상태를 주어진 객체를 동일한 식별자를 가진 영속 객체에 추가합니다.

+0

그래서 첫 번째 문제는 두 번째 문제 (엔티티 병합)에서 해결 방법은 없지만 할일이 없다고 생각합니다. 코드 샘플이 필요합니까? – user3363936

+0

올바른 ID가 할당 된 엔터티와 병합을 호출하면 어떻게됩니까? 어떤 일이 발생할 것으로 예상합니까? 로그에서 테스트 /보기를 작성하십시오. 다음 코드를 여기에 표시하십시오 ... – NimChimpsky

+0

merge를 호출하면 엔티티의 속성과 하위 클래스가 삽입되거나 업데이트되므로 잘 작동하도록 semms하지만 ontToMany로 매핑 된 요소 하나를 제거하면 DataBase에서 제거되지 않습니다. .. 그래서 나는 그것이 삭제 될 것으로 예상한다. 동안, 병합하기 전에 요소를 다시 데이터베이스에서 삭제 된 엔티티를로드 ... – user3363936

관련 문제