심각:servlet.service()for servlet[spring]in context with path[/XX]threw exception[Request
: Servlet.service() for servlet [spring] in context with path [/XX] threw exception [Request processing failed; nested exception is org.hibernate.HibernateException: No Session found for current thread] with root cause
org.hibernate.HibernateException: No Session found for current thread
질문
3.토론:1.인터넷 에서 많은 사람들 이 OpenSession InViewFilter 를 설정 하지 않 았 기 때 문 이 라 고 말 합 니 다.다음 과 같 습 니 다.
OpenSessionInViewFilter
org.springframework.orm.hibernate4.support.OpenSessionInViewFilter
sessionFactoryBean
sessionFactory
OpenSessionInViewFilter
/
그러나 이 방법 은 줄 이 다 릅 니 다.이 필 터 를 설정 하 는 것 은 hibenate 의 지연 로드 문 제 를 진행 하기 위해 서 입 니 다.
2.일부 사람들 은 Dao 층 의 getCurrentSession()방법 을 openSession()방법 으로 바 꿀 수 있다 고 말한다.
3.어떤 사람 은 session Factory 에 추가 할 수 있다 고 합 니 다. thread,하지만 또 다른 이상 XX 가 생 겼 습 니 다. is not valid without active transaction(이것 은 본인 이 해결 하지 못 했 습 니 다.모두 가 함께 토론 하 는 것 을 환영 합 니 다)
4.또 하나의 해결 방법 은 SpringMVC 설정 파일 에 이 문 구 를 추가 하 는 것 입 니 다. 。
4.정리:나 는 모든 방법 을 한 번 씩 시도 하여 최종 적 으로 두 가지 해결 방법 을 정리 했다.
방법 1:Dao 층 의 getCurrentSession()방법 을 openSession()방법 으로 바 꿉 니 다.이 방법 은 실행 할 수 있 습 니 다.이 유 는 다음 과 같 습 니 다.
1.getCurrentSession()을 사용 하여 만 든 session 은 현재 스 레 드 에 연결 되 고 openSession()을 사용 합 니 다.
만 든 session 은
2.getCurrentSession()을 사용 하여 만 든 session 은 commt 나 rollback 에서 자동 으로 닫 힙 니 다(그래서 session 을 찾 을 수 없 는 이상 이 발생 했 습 니 다).openSession()을 사용 합 니 다.
만 든 session 필수
수 동 으로 닫 기.
방법 2:SpringMVC 설정 파일 에 이 문 구 를 추가 합 니 다.이 유 는 다음 과 같 습 니 다. 설정 파일 에 CGLib 동적 프 록 시 기술 을 사용 하여 인 터 페 이 스 를 만 들 지 않 으 면 GCLIB,spring 을 사용 해 야 함 을 표시 합 니 다. 동적 에이전트 와 CGLIB 사이 에서 자동 으로 전 환 됩 니 다.
이것 도 본인 의 한 가지 정리 입 니 다.만약 에 잘못 이 부족 한 부분 이 있 으 면 여러분 들 이 적극적으로 지적 하고 토론 에 참여 해 주 십시오.감사합니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
thymeleaf로 HTML 페이지를 동적으로 만듭니다 (spring + gradle)지난번에는 에서 화면에 HTML을 표시했습니다. 이번에는 화면을 동적으로 움직여보고 싶기 때문에 입력한 문자를 화면에 표시시키고 싶습니다. 초보자의 비망록이므로 이상한 점 등 있으면 지적 받을 수 있으면 기쁩니다! ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.