JPA和默认锁定模式

JPA和默认锁定模式,第1张

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
如果您没有其他说明,它将使用该模式。

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

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

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

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



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5500843.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存