我是JPA的新手并注意到可以通过使用@Version
注释实体中的字段来利用乐观锁定。我只是好奇持久性提供程序是否会创建一个隐式版本字段,如果之前不存在。例如objectdb的网站:
“使用ObjectDB时,默认情况下启用乐观锁定并且全自动。”
但这似乎是特定于供应商的行为,因为例如,EclipseLink中默认不会启用乐观锁定。所以,如果我想使用锁定(是的,我想要:-)),我是否需要为我的所有实体创建一个额外的属性?规范中是否有任何提示?
提前谢谢!
答案 0 :(得分:3)
是的,JPA @Version
注释允许您定义版本属性,我假设ObjectDB默认只创建一个这个属性。
您自己的属性可以是Integer,Long或Short(或它们的原始等价物),也可以是java.sql.Timestamp。
如果您明确使用@Version
注释,我知道的大多数JPA提供程序只会执行乐观锁定。