右耳菌-邓小白的Java架构师的修炼之路

Spring 事务管理相关知识

2022-04-15  本文已影响0人  右耳菌

一、事务管理

1. 几种事务
  try {
      connection.setAutoCommit(false); // 开启事务
      /*
       *  TODO  do work
      */
      connection.commit(); // 提交事务
  } catch(Exception e) {
      connection.rollback(); // 发生异常,回滚
  } finally {
      connection.close(); // 关闭连接
  }
  Session session = factory.openSession(); // 获取Session
  Transaction tx = null;
  try {
      tx = session.beginTransaction(); // 开启事务
      /*
       *  TODO  do work
       */
      tx.commit(); // 提交事务
  } catch (Exception e) {
      if(tx != null) {
          tx.rollback(); //发生异常,回滚
      }
  } finally {
      session.close(); // 关闭连接
  }
2. Spring 事务管理
PlatformTransactionManager 的实现
3. 事务的隔离级别
4. 传播行为

假设有一个情况:事务B调用了事务A,如下图所示:

事务B调用了事务A
事务关系

简单的

复杂的
需要参考以下内容
-

PROPAGATION_REQUIRED | PROPAGATION_NESTED
  • 必须在事务中执行,如果不存在,则启动新事务
  • 内部事务会影响外部事务
  • 必须在事务中执行,如果不存在,则启动新事务
  • 事务之间互相不影响

PROPAGATION_REQUIRES_NEW
  • 必须在新事务中执行,挂起当前事务
  • 独立physical事务
上一篇 下一篇

猜你喜欢

热点阅读