문제

스프링과 최대 절전 모드를 사용하여 데스크탑 애플리케이션을 개발하고 있으며 게으른 시작에 문제가 있습니다. 웹에서 보았고 모든 솔루션은보기 패턴의 오픈 세션과 관련이 있지만이 패턴을 사용할 수는 없습니다. 나는 또한 그것을 얻으려고 노력했다 sessionfactory ~로부터 HibernateTemplate, 그러나 그것은 나에게 연결이 끊어진 세션을 반환합니다.

다른 솔루션을 아는 사람이 있습니까?

도움이 되었습니까?

해결책

기본적으로 두 가지 솔루션이 있다고 제안합니다.

  1. 게으른 이니셜 객체 또는 컬렉션에 액세스 할 때 최대 절전 모드 세션을 열도록 준비하십시오. 즉, 코드에서 트랜잭션 경계를 신중하게 표시해야합니다. 스프링은 이것을 가능하게하지만 데스크탑 응용 프로그램에서는 트랜잭션 경계가 조금 더 분명한 웹 응용 프로그램만큼 간단하지 않습니다.

  2. 최대 절전 모드에서 지속 된 물체에 대한 모든 게으른 이니셜 화를 끄십시오.

옵션 2는 많은 불필요한 데이터베이스 액세스를 초래할 수 있으며 옵션 1은 워크 플로 및 사용 사례를 심각하게 연구해야한다는 것을 의미합니다.

도움이되기를 바랍니다!

다른 팁

한 가지 옵션은 엔티티 또는 컬렉션에서 Hibernate.initialize ()를 호출하여 초기화를 강제로하는 것입니다. 당신은 당신이 데이터를 당신의 관점으로 되돌려 놓기 전에 이것을하고 싶을 것입니다. 데이터베이스에 많은 SQL 문을 생성하기 때문에 이것을 신중하게 고려할 것입니다.

HQL 쿼리에서 "페치"를 사용하거나 구성 모드를 매핑에서 "열심"으로 구성 할 수 있습니다 (JPA의 FetchMode.eager 또는 hbm.xml의 Lazy = "False"라고 생각합니다).

@jose : 자신의 ThreadLocal에서 세션을 관리하지 마십시오. sessionFactory.getCurrentSession ()을 사용하고 "스레드"SessionContext를 사용하도록 최대 절전 모드를 구성하십시오.

나는 매우 비슷한 문제가 있었고, 그것에 대한 적절한 해결책을 찾을 수 없었기 때문에. 나는 웹에서 발견 된 많은 다른 접근법을 결합하여 내 블로그에 게시 한 내 자신의 하나를 생각해 냈습니다.

죄송합니다. 여기에 모든 것을 넣지는 않지만 모든 포럼 에서이 문제를 겪고있는 사람들이나 비슷한 문제를 발견 한 모든 포럼에서 많은 노력을 기울이는 것이 많은 일입니다.

최대 절전 모드와 스프링으로 원격 게으른 하중

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top