用于乐观锁定的JPA版本字段的最佳类型

 mobiledu2502883647 发布于 2023-01-14 15:23
  • php
  • 我怀疑哪个是用@Version注释的字段的最佳类型,用于JPA中的乐观锁定.

    API javadoc(http://docs.oracle.com/javaee/7/api/javax/persistence/Version.html)说:

    "版本属性支持以下类型:int,Integer,short,Short,long,Long,java.sql.Timestamp."

    在其他页面(http://en.wikibooks.org/wiki/Java_Persistence/Locking#Optimistic_Locking)中说:

    "JPA支持使用乐观锁定版本字段,该字段在每次更新时都会更新.字段可以是数字或时间戳值.建议使用数值,因为数值更精确,可移植,高性能且更易于处理时间戳".

    "如果表已经有最后更新的时间戳列,则经常使用时间戳锁定.这也是自动更新上次更新列的便捷方式.时间戳版本值比数字版本更有用,因为它包含相关信息关于对象上次更新的时间."

    我的问题是:

    如果您要使用lastUpdated字段或者更好地拥有数字版本字段和其他字段中的时间戳,那么更好的是Timestamp类型吗?

    在数值类型(int,Integer,short,Short,long,Long)之间最好选择(考虑每种类型的长度)?我的意思是,我认为最好的是Long,但每行需要很多空间.

    当版本字段到达数字类型的最后一个数字时会发生什么(例如,短字段中的32,767)?它会在下一次增量中从1开始吗?

    小智.. 7

    只需使用Long或Integer。但是不要与int或long一起使用。与此处的其他评论相反,当实体从未持久化时,期望为空值。具有int或long可能会使Hibernate认为该实体已经被保留并且处于分离状态,因为未设置时版本值将为0。刚刚完成了FK违规的调试,其中“ int”是原因,所以节省您的时间,只需使用Long或Integer。

    撰写答案
    今天,你开发时遇到什么问题呢?
    立即提问
    热门标签
    PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有