Spring에서 Hibernate를 사용할 때에 HibernateTemplate이 더 이상 권장되지 않는다고 해서 순수 Hibernate API만 쓰는 방식으로 변경하려 한다. Repository 에서는 Hibernate의 SessionFactory만 주입받아서 사용하는 것이다.
이 때, createQuery(), get() 등의 메소드를 사용하려 하면 active transaction이 없다는 에러를 당할 수 있는데 이것은 위 url에서 jtigger가 제시하는 것처럼, hibernate.current_session_context_class 속성값을 'thread'로 두는 것을 제거해야 한다. 왜냐하면 spring이 SessionFactory를 설정할 때에, session이 transaction과 같은 ThreadLocal에 저장되도록 세팅하는데, 강제로 속성을 위와 같이 지정하면 두개의 서로 다른 ThreadLocal이 만들어지게 되는 셈이기 때문이다.
댓글 없음:
댓글 쓰기