声明式事务管理 rollback-for事务回滚策略

rollback-for 属性配置事务的回滚策略


默认的回滚策略:
任何RuntimeException将触发事务回滚,但是任何checked Exception将不触发事务回滚。

rollback-for="java.lang.Exception"

一切继承与java.lang.Exception的异常将会引发事务回滚。

*service中的异常。发生回滚的前提是service层抛出异常,try catch 的异常发生不会引发事务回滚。

只读事务:在执行多条sql语句看到执行前点的数据状态,保证数据一致性。

Oracle默认情况下(没有事务) 保证了SQL语句级别的读一致性,即在一条SQL语句执行期间,它只会看到执行前点的数据状态,而不会看到执行期间数据被其他SQL改变的状态。
所以如果执行多条SQL的时候呢?比如你做一个报表查询,在执行完第一条sql的时候,执行第二条查询SQL,而这个之间有数据被改变了,第二条数据查询就有可能不一致。
而Oracle的只读查询则保证了事务级别的读一致性,即在该事务范围内执行的多条SQL都只会看到执行前点的数据状态,而不会看到事务期间的任何被其他 SQL改变的状态。
没有事务的时候,在执行一条sql语句看到执行前点的数据状态,保证数据一致性

参考文档: http://www.cnblogs.com/rushoooooo/archive/2011/08/28/2155960.html

猜你喜欢

转载自tangzongyun.iteye.com/blog/2280220