事务管理

事务管理

  • 事务 :一组业务操作ABCD 要么全部成功,要么全部失败
  • 特性:ACID
原子性:整体
一致性:完成
隔离性:并发
持久性:结果
  • 隔离问题:
    脏读:一个事务读到另一个事务没有提交的数据
    不可重复读:一个事务读到另一个事务已提交的数据(update)
    虚读(幻读):一个事务读到另一个事务已提交的数据(insert)
  • 隔离级别
    read uncommitted:读未提交 存在三个问题
    read committed:读已提交.解决脏读,存在2个问题
    repeatable read:可重复读,解决:脏读,不可重复,存在一个问题
    serialzable:串行化,都解决,单事务

2.2 事务管理结束

2.2.1 导入 jar包

2.2.2 三个顶级接口

  • PlatformtransactionManager 平台事务管理器,spring要管理事务,必须使用事务管理器
  • TransactionDefinition 事务详情(事务定义,事务属性),spring用于确定事务具体详情,例如:隔离级别,是否只读,超时时间 等(进行事务配置时,必须配置详情,spring将配置项封装到该对象实例)
  • TransactionStatus:事务状态,spring用于记录当前事务运行状态,例如:是否有保存点,事务是否完成(spring底层根据状态进行相应操作)

2.2.3 PlatformtransactionManager 事务管理器

  • 常见的事务管理器
    DataSourceTransactionManager ---jdbc 开发时事务管理器,采用JdbcTemplate
    
    HibernateTransactionManager ---hibernate开发时事务管理器,整合hibernate
  • api详情
//事务管理器 通过"事务详情",获取"事务状态",从而管理事务
TransactionStatus getTransaction(TransactionDefinition defintion),

//根据状态提交
void commit(TransactionStatus status)

//根据状态回归
void rollback(TransactionStatus status)

2.2.4 TransactionStatus 事务的状态

    isNewTransaction() 是否是新的事务
    hasSavepoint() 是否有保存点
    setRollbackOnly() 设置回滚
    isRollbackOnly() 是否回滚
    flush() 刷新
    isCompleted() 是否完成

2.2.5 TransactionDefinition 事务详情

getPropagationBehavior() 传播行为
getIsolationLevel() 隔离级别
getTimeout() 获取超时时间
isReadOnly() 是否只读(增删改:读写;查询:只读)
getName():String 配置事务详情名称,一般方法名称.例如:save.add * 等


传播行为:在两个业务之间如何共享事务

你可能感兴趣的:(事务管理)