关于Spring的事务学习,我觉得klyuan有一篇文章介绍的很不错:http://www.iteye.com/topic/78674。从这篇文章里,我弄清楚了脏读,幻读等概念。
Spring的默认事务隔离级别
ISOLATION_DEFAULT
是ISOLATION_READ_COMMITTED 提交读;默认事务传播行为是PROPAGATION_REQUIRED,如果存在一个事务,则支持当前事务。如果没有事务则开启一个新的事务。
这里有个很有意思的事情,想和大家一起分享一下。
Class Sample{
private int id;
private String name;
//setters and getters
}
Class A {
public void functionA(Sample sample){
//事务处理,更新sample
}
}
class B {
public void functionB(List samples){
//事务处理,遍历samples,调用A的functionA方法
}
}
代码我就不详细的写出来了,大致的意思大家也应该能看明白,事务的隔离级别和传播行为都是默认的。调用B的functionB方法,会出现什么问题?