原生事物实现方式

  1. // 1.获取链接
  2. Connection conn = DriverManager.getConnection("xxx");
  3. // 2.手动提交
  4. conn.setAutoCommit(false);
  5. // 3.执行sql
  6. PreparedStatement st = conn.prepareStatement("sql");
  7. st.execute();
  8. // 4.提交 or 回滚
  9. conn.commit();
  10. conn.rollback();

spring事物核心API

1.PlatformTransactionManager
事物管理器-定义了事物的基本操作:开启事物、提交事物、回滚事物
AbstractPlatformTransactionManager,规定了事务管理器的基本框架,仅将依赖于具体平台的特性作为抽象方法留给子类实现
image.png
2.TransactionStatus
事物状态、保存点
image.png
3.TransactionDefinition
事物隔离级别和事物传播级别

Spring事物实现方式

声明式事物

基于注解:Transactional

  1. @Transactional
  2. public void service() throws Exception {
  3. // TODO: 业务代码
  4. }

编程式事物

事物模板类:TransactionTemplate
核心原理同原生

  1. TransactionTemplate transactionTemplate =
  2. new TransactionTemplate(new DataSourceTransactionManager(new DruidDataSource()));
  3. transactionTemplate.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
  4. transactionTemplate.setIsolationLevel(TransactionDefinition.ISOLATION_READ_COMMITTED);
  5. Object object = transactionTemplate.execute(status -> {
  6. // TODO: 业务代码
  7. return null;
  8. });

声明式事物原理

声明式事务: 建立在AOP之上的,其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务。声明式事务最大的优点就是不需要通过编程的方式管理事务,这样就不需要在业务逻辑代码中掺杂事务管理的代码,只需在配置文件中做相关的事务规则声明即可。
Transactional注解解释

spring创建事物代理类的过程
https://blog.csdn.net/weixin_37689658/article/details/118766462
https://blog.csdn.net/qq_37469055/article/details/106712993
https://louyuting.blog.csdn.net/article/details/78118619