【Spring】声明式事务aop

我们故意在一个方法里先写一个插入,然后在写一个删除语句。其中删除语句的sql表达错误。

.

 虽然会报错 告诉你删除的sql语句错误,但是不会告诉你 插入操作成功了。

也就是说 虽然程序因为错误没有运行完,但是有一部分操作还是成功了。

明显不满足我们的ACID原则(原子性、一致性、隔离性、持久性)

 首先放上mybatis-spring的事务官方文档

http://mybatis.org/spring/zh/transactions.html

方式一、编程式事务(不推荐)

不推荐的原因是因为他是侵入式的,需要改变程序代码才能捕获异常。

使用try-catch进行捕获。

方式二、声明式事务(使用aop)

1.spring的事务传播机制

 

2.spring的事务隔离级别(巧记 脏不换)

第一个是数据库默认

第二个会出现:脏读、不可重复读、幻读

第三个会出现:不可重复读、幻读

第四个会出现:幻读

第五个全部都不会出现

(相比于数据库只多了一个 数据库默认 级别)

3.声明事务

 

原文地址:https://www.cnblogs.com/cckong/p/14389186.html