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

JPA和默认锁定模式

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

JPA和默认锁定模式

我已经浏览了Java Persistence API 2.0 Final
Release
规范的3.4.4 锁定模式 部分,虽然找不到任何 特定的 东西(它没有声明
是默认值或类似的东西),但是有一个脚注说以下。

锁定模式类型NONE可以指定为锁定模式参数的值,并且还为注释提供默认值。

本节介绍了

LockModeType
可用值的种类及其用法,并介绍了哪些方法接受此类参数,而没有其他方法。

因此,正如它所说的那样

LockModeType.NONE
,注解是默认的(JPA,左右注解),我想应该在使用
EntityManager.find(Class,Object)
默认
LockModeType
值时使用。

还有其他一些 微妙的 提示可以加强这一点。3.1.1节 EntityManager接口

无需在事务上下文中调用find方法(假设它不带锁地调用或使用LockModeType.NONE调用)和getReference方法。

这说得通。例如,如果您使用MySQL作为数据库,而您选择的数据库引擎是InnoDB,那么(默认情况下)您的表将使用

REPEATABLEREAD
,如果您使用其他RDBMS或其他数据库引擎,则可能会改变。

现在,我不能完全确定隔离级别是否与JPA锁定模式有关(尽管似乎是这样),但是我的观点是,不同的数据库系统有所不同,因此JPA无法为您做出决定(至少根据规范)默认使用哪种锁定模式,因此,

LockModeType.NONE
如果您没有其他说明,它将使用该模式。

我还找到了有关隔离级别和锁定模式的文章,您可能想阅读。

哦,回答您的最后一个问题。

如果不定义显式锁定模式,是否会丢失数据库完整性?

要看情况 ,但是如果您有并发事务,那么答案可能 是肯定的



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

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

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