关于Spring的事务学习,我觉得klyuan有一篇文章介绍的很不错:http://www.javaeye.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方法,大家觉得会出现什么问题?
--EOF--
Spring in action 第二版
转自我的javaeye:http://littlez.javaeye.com/admin/blogs/254980
|