Spring事务管理抽象 第一篇

Spring事务管理抽象

Spring 事务管理的SPI抽象层的三个主要接口,分别是:PlatformTransactionManager,TransactionDefinition,TransactionStatus

TransactionDefinition 用于描述事物的隔离级别,超时时间,是否为只读事务,事务传播行为

TransactionStatus 代表了一个事务的运行状态

PlatformTransactionManager 抽象事务的提交和回滚(回滚到事务的某个保存点后提交) ,也是Spring事务编程的核心接口。

public interface PlatformTransactionManager{
  
      TransactionStatus getTransaction(TransactionDefinition definition)
                throws TransactinException;
      void commit(TransactionStatus status) throws TransactinException;
      void rollback(TransactionStatus status) throws TransactinException;
}
  • getTransaction():返回一个已经激活的事务或创建一个新的事务(根据给定的TransactionDefinition类型参数定义的事务属性),返回的是TransactionStatus对象代表了当前事务的状态,其中该方法抛出TransactionException(未检查异常)表示事务由于某种原因失败。
  • commit():用于提交TransactionStatus参数代表的事务。
  • rollback():用于回滚TransactionStatus参数代表的事务。
  • DataSourceTransactionManager,HibernateTransactionManager,JtaTransactionManager 等等都为该接口的具体实现。
public interface TransactionDefinition {  
       int getPropagationBehavior();  
       int getIsolationLevel();  
       int getTimeout();  
       boolean isReadOnly();  
       String getName();  
}
  • getPropagationBehavior():返回定义的事务传播行为;
  • getIsolationLevel():返回定义的事务隔离级别;
  • getTimeout():返回定义的事务超时时间;
  • isReadOnly():返回定义的事务是否是只读的;
  • getName():返回定义的事务名字。
public interface TransactionStatus extends SavepointManager {  
       boolean isNewTransaction();  
       boolean hasSavepoint();  
       void setRollbackOnly();  
       boolean isRollbackOnly();  
       void flush();  
       boolean isCompleted();  
}  
  • isNewTransaction():返回 当前事务状态是否是新事务;
  • hasSavepoint():返回当前事务是否有保存点 ;
  • setRollbackOnly() :设置当前事务应该回滚;
  • isRollbackOnly(() :返回当前事务是否应该回滚;
  • flush() :用于刷新底层会话中的修改到数据库,一般用于刷新如Hibernate/JPA的会话,可能对如JDBC类型的事务无任何影响;
  • isCompleted() :当前事务否已经完成。

内置事务管理器实现

  • DataSourceTransactionManager :位于org.springframework.jdbc.datasource包中,数据源事务管理器,提供对单个javax.sql.DataSource事务管理,用于Spring JDBC抽象框架、iBATIS或MyBatis框架的事务管理;
  • JpaTransactionManager :位于org.springframework.orm.jpa包中,提供对单个javax.persistence.EntityManagerFactory事务支持,用于集成JPA实现框架时的事务管理;
  • HibernateTransactionManager :位于org.springframework.orm.hibernate3包中,提供对单个org.hibernate.SessionFactory事务支持,用于集成Hibernate框架时的事务管理;该事务管理器只支持Hibernate3+版本,且Spring3.0+版本只支持Hibernate 3.2+版本;
  • JtaTransactionManager :位于org.springframework.transaction.jta包中,提供对分布式事务管理的支持,并将事务管理委托给Java EE应用服务器事务管理器;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值