Spring-aop的配置,开启事务(xml)

基础架包和aop联盟包, spring-aop.jar
Spring-aop的配置,开启事务(xml)_第1张图片
Spring-aop的配置,开启事务(xml)_第2张图片
事务这个概念的数据库的
实际项目中事务的处理在Service

Spring控制事务处理有三种方法
	Spring-aop的配置

Spring-aop的注解
Spring-aspectJ的配置

事务四大特性
A原子性
C一致性
Isolation隔离性
D持久性

事务的隔离级别: ISOLATION_DEFAULT
读未提交:脏读
读已提交:不可重复读,Oracle和SqlServer数据库的默认隔离级别
可重复读:底层使用了快照(缓存),用户执行增删改的操作,会刷新快照,幻读,
MySql 使用的默认级别
串行化:操作数据时,当前数据行加锁,消耗性能太大

事务的传播机制: PROPAGATION_REQUIRED
两个事务直接相互调用时,事务的提交方法
PROPAGATION_REQUIRED:A事务调用B事务,两个事务作为一个事务执行

然后我们再看看xml























ISOLATION_DEFAULT,PROPAGATION_REQUIRED
ISOLATION_DEFAULT,PROPAGATION_REQUIRED,










注意这里的key是方法名,我测试的是runtime异常
Spring-aop的配置,开启事务(xml)_第3张图片
@Override
public void buyStock(String uname, double balance, String sname, int count) {
userDao.addUser(uname, balance);
if(true){
throw new RuntimeException();
}
stockDao.addCount(sname, count);
}
在测试方法如果扔的Exception(),那么在方法和xml配置需要以下修改
public void buyStock(String uname, double balance, String sname, int count) throws Exception {
userDao.addUser(uname, balance);
if(true){
throw new Exception();
}
stockDao.addCount(sname, count);
}
xml
ISOLATION_DEFAULT,PROPAGATION_REQUIRED,-Exception

Spring事务处理对于Exception和RuntimeException这两种异常的处理机制不同
RuntimeException:非受查异常默认回滚
Exception:受查异常默认提交
可以通过配置来修改默认处理方式
一受查异常:受查异常回滚
+非受查异常:非受查异常提交

下一篇:注解配置

你可能感兴趣的:(ssm)