Spring如何管理休眠会话生命周期

前端之家收集整理的这篇文章主要介绍了Spring如何管理休眠会话生命周期 前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

Spring用于我们团队的Java EE项目,而hibernate用于基础ORM.

transactionManager的设置如下:

<bean id="transactionManager"  class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean> 

sessionFactory的设置如下:

<bean id="sessionFactory"  class="org.springframework.orm.hibernate4.LocalSessionfactorybean">
<property name="dataSource" ref="dataSource" />
<property name="packagesToScan"
value="com.company.model" />
<property name="hibernateProperties">

<value>
hibernate.dialect=org.hibernate.dialect.Oracle10gDialect
hibernate.show_sql=true
hibernate.jdbc.fetch_size=50
</value>
</property>
</bean>

我的问题是考虑了整个设置,我没有看到休眠会话生命周期的任何属性设置.在休眠参考中,引入了上下文会话,并说有CurrentSessionContext的三种实现.

> JTA 2.Thread 3.托管

我怎么知道使用了哪种实现?也许在Spring之前,但我不知道.

最佳答案
Spring使用给定的dataSource创建SessionFactory,并从连接池中获取数据库连接.我们通过SessionFactory.getCurrentSession()获得一个Hibernate会话.然后开始事务,执行工作,然后执行commit()或rollback(),最后关闭连接(连接对象将返回到池中).当我们停止应用程序或关闭服务器时,Hibernate会话工厂将被破坏/关闭.并且默认情况下,如果使用HibernateTransactionManager,将使用CurrentSessionContext的Thread实现.如果要使用jta实现,则必须使用“ JtaTransactionManager”作为事务管理器.

猜你在找的Spring相关文章