• 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():当前事务否已经完成。
  • 相关阅读:
    <img>标签
    <a>标签
    HTML标签类型
    HTML实体
    HTML颜色的三种写法
    HTML绝对路径和相对路径
    HTML基本结构及标签样式
    Java Activiti 工作流引擎 springmvc SSM 流程审批 后台框架源码
    java ssm 后台框架平台 项目源码 websocket IM quartz springmvc
    分批插入数据基于mybatis
  • 原文地址:https://www.cnblogs.com/qunan/p/9468763.html
Copyright © 2020-2023  润新知