我一直在阅读有关在 Hibernate 中使用 Spring 的内容,我对 session 管理感到非常困惑。希望有人能为我解决一些问题,
首先,我不知道使用 HibernateTemplate 时如何管理 session 。当您在模板上调用方法(例如 Save())时, session 是否打开和关闭?当您使用 find() 方法时,是否返回分离的对象?
我已经阅读了 Spring 关于事务的部分,但它主要讨论的是处理异常。我希望找到某种方法将 hibernate session 绑定(bind)到 Spring 事务,以便我可以在事务完成时提交对 hibernate 对象的更改。有没有办法实现这个目标?
最佳答案
Spring 为您管理 session 。寻找documentation ,特别是在第 13.3.1 节中,您会看到
<bean id="mySessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="myDataSource"/>
<property name="mappingResources">
<list>
<value>product.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<value>
hibernate.dialect=org.hibernate.dialect.HSQLDialect
</value>
</property>
</bean>
然后在第 13.3.3 节中您会看到这一点
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
如果你仔细观察,你会发现 session 工厂使用数据源,事务管理器使用 session 工厂,这样 Spring 就可以为你获取 session ,并将所有持久性代码包装在事务中。
关于hibernate - Spring + Hibernate session 管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6426708/