최대 절전 모드 및 지연로드와 관련된 문제가 있습니다.최대 절전 모드 세션 스레딩
배경 : 가 나는 스프링 MVC 웹 응용 프로그램을 가지고, 내 지속성 계층에 대한 최대 절전 모드를 사용합니다. OpenSessionInViewFilter를 사용하여 뷰 레이어의 지연 엔티티를로드 할 수있게했습니다. 그리고 HibernateDaoSupport 클래스를 확장하고 HibernateTemplate을 사용하여 객체를 저장 /로드합니다. 모든 것이 잘 작동하고 있습니다. 지금까지.
문제점
: 나는 웹 요청을 통해 시작할 수 있습니다 작업을해야합니다. 요청이 컨트롤러로 라우팅되면 컨트롤러는이 작업에 대한 새로운 Runnable을 생성하고 스레드를 시작하여 작업을 실행합니다. 그래서 원래의 쓰레드가 리턴 될 것이고 OpenSessionInViewFilter에 의해 ThreadLocal에 놓인 Hibernate 세션은 그 태스크의 새로운 쓰레드에서 사용할 수 없다. 그래서 작업이 일부 데이터베이스 항목을 수행 할 때 나는 악명 높은 LazyInitializationException을 얻습니다. 어느 한 내가 작업에 사용할 수있는 최대 절전 모드 세션을 만들 수있는 가장 좋은 방법을 제안 할 수 있습니까?읽어 주셔서 감사합니다.
새로운 스레드를 시작하지 않음으로써 무엇을 의미합니까? – Dejell
@Dejel 아마 [로 스케줄 (http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ScheduledThreadPoolExecutor.html) 또는 유사한 메커니즘을 활용한다. – user11153