spring的只读事务嵌套
程序员文章站
2022-03-02 08:32:17
...
spring的事务有只读与可写之分:
两者的根本区别就是只读事务所做的数据库修改不会提交到数据库.
需要注意2点:
1.HibernateTemplate的如下API检查了当前事务是否只读,如果是只读会抛出InvalidDataAccessApiUsageException异常:
save,update,saveOrUpdate,saveOrUpdateAll,replicate,persist,merge,delete,deleteAll
但是HibernateTemplate并未保证只读事务进行数据库写操作肯定抛出此异常,在只读事务中使用以上API之外的方法做数据库写操作就不会抛出异常,也不会提交到数据库.
2.如果只读事务中嵌套了另一个事务,且内嵌事务的级别设置为PROPAGATION_REQUIRED,则内嵌事务同样是只读的,不会真正提交,即便内层事务为非只读事务.
个人浅见,欢迎讨论.
两者的根本区别就是只读事务所做的数据库修改不会提交到数据库.
需要注意2点:
1.HibernateTemplate的如下API检查了当前事务是否只读,如果是只读会抛出InvalidDataAccessApiUsageException异常:
save,update,saveOrUpdate,saveOrUpdateAll,replicate,persist,merge,delete,deleteAll
但是HibernateTemplate并未保证只读事务进行数据库写操作肯定抛出此异常,在只读事务中使用以上API之外的方法做数据库写操作就不会抛出异常,也不会提交到数据库.
2.如果只读事务中嵌套了另一个事务,且内嵌事务的级别设置为PROPAGATION_REQUIRED,则内嵌事务同样是只读的,不会真正提交,即便内层事务为非只读事务.
个人浅见,欢迎讨论.
上一篇: kubeadm的yum和apt国内源
下一篇: VirtualBox虚拟机联网配置
推荐阅读
-
Spring声明式事务和@Aspect的拦截顺序问题的解决
-
MySQL嵌套事务所遇到的问题
-
spring整合atomikos实现分布式事务的方法示例
-
SQL Server误区30日谈 第26天 SQL Server中存在真正的“事务嵌套”
-
spring5 源码深度解析----- 事务的回滚和提交(100%理解事务)
-
简单了解Spring中的事务控制
-
基于Spring Cloud Netflix的TCC柔性事务和EDA事件驱动示例
-
Spring的事务机制实例代码
-
MySQL嵌套事务所遇到的问题
-
Mybaits 源码解析 (十二)----- Mybatis的事务如何被Spring管理?Mybatis和Spring事务中用的Connection是同一个吗?