spring中的事务管理(三)

spring中的事务管理(三)


事务的隔离级别

        从理论上来说, 事务应该彼此完全隔离, 以避免并发事务所导致的问题. 然而,那样会对性能产生极大的影响, 因为事务必须按顺序运行.

        在实际开发中, 为了提升性能, 事务会以较低的隔离级别运行.

        事务的隔离级别可以通过隔离事务属性指定

 

Spring支持的事务隔离级别


事务的隔离级别要得到底层数据库引擎的支持, 而不是应用程序或者框架的支持.

Oracle 支持的 2 种事务隔离级别:READ_COMMITED , SERIALIZABLE

Mysql 支持 4 中事务隔离级别.

 

设置隔离事务属性

用@Transactional 注解声明式地管理事务时可以在 @Transactional 的 isolation 属性中设置隔离级别.


在事务通知中, 可以在 <tx:method> 元素中指定隔离级别

 

设置回滚事务属性

默认情况下只有未检查异常(RuntimeException和Error类型的异常)会导致事务回滚. 而受检查异常不会.

事务的回滚规则可以通过@Transactional 注解的 rollbackFor 和 noRollbackFor 属性来定义. 这两个属性被声明为 Class[] 类型的, 因此可以为这两个属性指定多个异常类.

rollbackFor:  遇到时必须进行回滚

noRollbackFor: 一组异常类,遇到时必须不回滚

 

在事务通知中, 可以在 <tx:method> 元素中指定回滚规则. 如果有不止一种异常, 用逗号分隔.


猜你喜欢

转载自blog.csdn.net/dl0246/article/details/78609555