Spring的事务初见

一、事务的特性

  • 原子性: 事务是最小的执行单位,不允许分割。事务的原子性确保动作要么全部完成,要么完全不起作用;
  • 一致性: 执行事务前后,数据保持一致;
  • 隔离性: 并发访问数据库时,一个用户的事物不被其他事物所干扰,各并发事务之间数据库是独立的;
  • 持久性: 一个事务被提交之后。它对数据库中数据的改变是持久的,即使数据库发生故障也不应该对其有任何影响。
二、spring事务管理接口
  • PlatformTransactionManager: (平台)事务管理器
  • TransactionDefinition: 事务定义信息(事务隔离级别、传播行为、超时、只读、回滚规则)
  • TransactionStatus: 事务运行状态

所谓事务管理,其实就是“按照给定的事务规则来执行提交或者回滚操作”。

三、PlatformTransactionManager接口介绍
    Spring框架支持事务管理的核心是事务管理器抽象,对于不同的数据访问框架(如Hibernate)通过实现策略接口PlatformTransactionManager,从而能支持各种数据访问框架的事务管理。
    PlatformTransactionManager接口定义如下:
1 public interface PlatformTransactionManager {
2        TransactionStatus getTransaction(TransactionDefinition definition) throws TransactionException;
3        void commit(TransactionStatus status) throws TransactionException;
4        void rollback(TransactionStatus status) throws TransactionException;
5 }

 

  • getTransaction()返回一个已经激活的事务或创建一个新的事务(根据给定的TransactionDefinition类型参数定义的事务属性),返回的是TransactionStatus对象代表了当前事务的状态,其中该方法抛出TransactionException(未检查异常)表示事务由于某种原因失败。
  • commit()用于提交事务.
  • rollback()用于回滚事务

四、TransactionDefinition接口定义如下

public interface TransactionDefinition {
       int getPropagationBehavior();
       int getIsolationLevel();
       int getTimeout();
       boolean isReadOnly();
       String getName();
}
  • getPropagationBehavior()返回定义的事务传播行为;
  • getIsolationLevel()返回定义的事务隔离级别;
  • getTimeout()返回定义的事务超时时间;
  • isReadOnly()返回定义的事务是否是只读的;
  • getName()返回定义的事务名字。

五、TransactionStatus接口定义如下

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():当前事务否已经完成。

 

posted @ 2018-08-14 15:06  鹊南  阅读(196)  评论(0编辑  收藏  举报