Spring事务注意事项
Spring的基于注解的声明式事务,配置起来非常简单,但是使用的时候需要注意两点:
假设
public class AServiceImpl implements AService { [......] public void saveA(A a){ ADao.insertA(a); } }
1. @Transactional必须标注在入口方法上。如:
public class ADaoImpl extends BaseDao implements ADao { @Transactional public void insertA(A a){ insert("insert_a", a); insert("insert_b", a.getB()); } }
如果是下面这种,就会失效:
public class ADaoImpl extends BaseDao implements ADao { public void insertA(A a){ insertAA(A a); } @Transactional public void insertAA(A a){ insert("insert_a", a); insert("insert_b", a.getB()); } }
2.加上事务的方法必须抛出RuntimeException的子类,否则不会回滚,如果在上面的加了@Transactional的insertA里catch了数据库异常,并且没有抛出,则这个方法的事务不会回滚。
相关推荐
spurity 2020-11-10
LeeLuffy 2020-10-16
DriveCar 2020-09-07
zjuwangleicn 2020-09-04
quniMdejiangyou 2020-08-15
gamestart0 2020-08-15
loviezhang 2020-08-08
gaozhennan 2020-08-03
mcvsyy 2020-08-02
happinessaflower 2020-07-29
花落花开春去秋来 2020-07-29
heniancheng 2020-07-26
牧场SZShepherd 2020-07-20
jakefei 2020-07-19
牧场SZShepherd 2020-07-19
qingjiuquan 2020-07-18
云之飞踢 2020-07-08
zhanbuquan 2020-07-04