Spring,@ PostConstruct,交易...并且这个变通办法会发生什么不好的事吗?

时间:2012-10-16 20:21:12

标签: spring hibernate

通过对先前问题的一些搜索,我看到我不能指望在@PostConstruct注释的方法中可以使用Hibernate会话我已经看到了诸如this one之类的解决方案建议只从会话工厂创建自己的会话,如下所示:

getSession().getSessionFactory().openSession()

这对我来说就像是一种魅力,但感觉有点......关闭......我是否应该注意到任何潜在的陷阱?

1 个答案:

答案 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。