栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Spring @Transactional只读传播

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring @Transactional只读传播

首先,由于Spring本身并不执行持久性,因此无法指定

readOnly
确切含义。该属性仅是提供者的提示,其行为取决于(在这种情况下)Hibernate。

如果指定

readOnly
true
,则刷新模式将设置为
FlushMode.NEVER
当前的
Hibernate Session
中的状态,以防止会话提交事务。

此外,将在JDBC连接上调用setReadOnly(true),这也是对基础数据库的提示。如果你的数据库支持它(很可能会这样做),则其效果与基本上相同

FlushMode.NEVER
,但是它更强大,因为你甚至无法手动刷新。

现在,让我们看看事务传播是如何工作的。

如果未明确设置

readOnly
true
,则将具有读/写事务。根据事务属性(如REQUIRES_NEW),有时你的事务在某个时候被挂起,新的事务开始并最终提交,然后恢复第一笔事务。

好,我们快到了。让我们看看导致

readOnly
这种情况的原因。

如果读/写事务中的方法调用需要

readOnly
事务的方法,则应暂停第一个方法,因为否则将在第二个方法的末尾进行刷新/提交。

相反,如果再次从需要read / write的readOnly事务中调用方法,则第一个方法将被挂起,因为它无法刷新/提交,而第二个方法则需要该方法。

在readOnly-to-readOnly和读/写到读/写的情况下,不需要暂停外部事务(除非你另外指定传播,否则显然)。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/385161.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号