通过对先前问题的一些搜索,我看到我不能指望在@PostConstruct
注释的方法中可以使用Hibernate会话我已经看到了诸如this one之类的解决方案建议只从会话工厂创建自己的会话,如下所示:
getSession().getSessionFactory().openSession()
这对我来说就像是一种魅力,但感觉有点......关闭......我是否应该注意到任何潜在的陷阱?
答案 0 :(得分:0)
Spring管理你的Hibernate Session
为每个线程绑定一个。
我不能指望在方法中可以使用Hibernate会话 用@PostConstruct注释
这是错误的,你可以在这一点上有一个会议。
您可以通过多种方式执行此操作,一种是定义Session的Bean并告诉Spring通过SessionFactory bean的工厂方法“openSession”实例化它。像这样:
<!-- Prototype so there is a new Session in every injection -->
<bean id="newSession" scope="prototype" class="...Session" factory-bean="sessionFactory"
factory-method="openSession" ... >
</bean>
此外,您可能希望通过Spring SessionFactory实现告诉Spring使用Hibernate托管的Sessions。