小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
本次话题将通过三篇博客对自己学习spring的事务属性的五大方面(学习资料☞《spring实战》)的笔记进行整理发布,如果问题,请多担待,如对您学习有所帮助,请点个赞👍吧,♥
摘要
本文主要对spring事务的五大器官剩余的三种进行详述,其中包括了只读、事务超时、回滚规则
只读
声明式事务的第三个特性是它是否为只读事务,如果事务只对后端的数据库进行读操作,数据库可以利用事务的只读特性来进行一些特定的优化,通过将事务设置为只读,就可以通知数据库,然后数据库应用它认为合适的优化措施,
因为只读优化是事务启动的时候由数据库实施的,只有对那些具备启动一个新事物的传播行为(PROPAGATION_REQUIRED、PROPAGATION_NEW、PROPAGATION_NESTED)(具体见第一篇文章),将事务声明为只读才有意义
事务超时
为了使程序更好的运行,事务不能运行太长的时间,因此、声明式事务下一个特性就是超时
假设某个事务运行的时间特别特别场,因为事务有可能会对后端的数据库进行锁定,所以长时间的事务就会占用不必要的数据库资源,我们就可以声明一个事务,再特定的时间之后自动回滚,而不是等着它自己结束,而超时的时间计时器会在事务开始的时候就启动,所以说对那些具备可能启动一个新事物的传播行为的方法来说,声明式事务超时才存在意义
回滚规则
事务五大器官最后一个是一些规则,也就是这个回滚规则,这些规则定义了哪些异常会导致事务回滚还有哪些不会不会导致回滚,默认情况下,事务只有遇到运行期异常时才会回滚,而在遇到检查型异常时不会回滚。
但是你可以声明事务在遇到特定的检查型异常时像遇到运行期异常时那样回滚,同样,还可以声明事务遇到特定的异常不回滚,即使这些异常是运行时异常