org.springframework.orm.hibernate3.HibernateTransactionManage

转载自:这里

org.springframework.orm.hibernate3
类 HibernateTransactionManager

java.lang.Object
  继承者 org.springframework.transaction.support.AbstractPlatformTransactionManager
      继承者 org.springframework.orm.hibernate3.HibernateTransactionManager
所有已实现的接口:
java.io.Serializable, BeanFactoryAware, InitializingBean, PlatformTransactionManager, ResourceTransactionManager

public class HibernateTransactionManager
   
   
    
    extends 
    
    AbstractPlatformTransactionManager
   
   
   
   
    
    implements 
    
    ResourceTransactionManager, 
    
    BeanFactoryAware, 
    
    InitializingBean
   
   

PlatformTransactionManager 实施单一Hibernate的SessionFactory 。绑定一个指定的工厂的Hibernate Session从到线程,可能。允许一个线程每绑定会话工厂SessionFactoryUtils HibernateTemplate是线程绑定会话了解和参与这种交易自动。使用上述两种或通过将这些 SessionFactory.getCurrentSession()是必需的Hibernate访问代码,这需要支持事务处理机制。

支持自定义隔离级别,并且将它作为应用Hibernate事务超时超时。

此项交易的应用程序管理器使用一个单一的交易数据访问Hibernate的SessionFactory恰当,但它也支持直接数据源在一个交易( 即纯JDBC代码相同的数据源工作)的访问。这允许它访问Hibernate和服务的使用(没有被察觉的Hibernate)纯JDBC混合服务! 应用程序代码需要坚持到相同的简单连接查找与模式作为 DataSourceTransactionManager (即 DataSourceUtils.getConnection(javax.sql.DataSource) 或经历一个 TransactionAwareDataSourceProxy )。

注:为了能够为普通的JDBC代码登记一个数据源的连接,这种情况需要(了解数据源setDataSource(javax.sql.DataSource) )。给定的数据源,显然应该匹配给定的SessionFactory使用的方法 。为了实现这一目标,同时配置相同的JNDI数据源,或者最好使用SessionFactory的创建 LocalSessionFactoryBean和本地数据源(将由本次交易经理自动检测)。

JTA的(通常是通过JtaTransactionManager )可以在同一事务中访问多个事务性资源的需要。 Hibernate使用的数据源是JTA需要在这种情况下(见容器设置)启用。通常情况下,对Hibernate的JTA设置有点容器特定由于到JTA TransactionManager的查找,正确的SessionFactory级别的事务处理读写缓存需要。

幸运的是,与春天更简单的方法: SessionFactoryUtils (因此HibernateTemplate )寄存器的同步与Spring TransactionSynchronizationManager (如使用JtaTransactionManager ),为了正确后完成回调 。因此,只要Spring的JtaTransactionManager长途驾驶的JTA事务,Hibernate不要求任何适当的JTA参加的特别配置 。请注意,有特别的限制的JTA子系统与EJB CMT和限制性:参见 JtaTransactionManager的详情的javadoc。

基于JDBC 3.0中,此嵌套事务管理器支持通过JDBC 3.0保存点交易。该AbstractPlatformTransactionManager.setNestedTransactionAllowed(boolean) “nestedTransactionAllowed ”}标志默认为“假”,但是,正如嵌套事务只会适用于JDBC连接,而不是Hibernate的Session和缓存的对象 。您可以手动设置“标志,以”真,如果你想使用Hibernate事务嵌套事务的JDBC访问代码中的参与(前提是你的JDBC驱动程序支持保存点)。 注意Hibernate本身不支持嵌套事务!因此,不要指望Hibernate访问代码语义参加一个嵌套事务。

需要休眠3.1或更高版本,如春天的2.5。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值