为了账号安全,请及时绑定邮箱和手机立即绑定

盒装与原始类型作为实体 id

盒装与原始类型作为实体 id

HUX布斯 2021-06-20 16:14:21
在 JPA(Hibernate 实现)中,哪种类型更适合用于实体的 id: 装箱类型(例如Integer)或未装箱类型(例如int)?一个朋友说你应该使用 Boxed 类型,因为当你在你的程序中创建一个新实体时,Hibernate 看到 idnull并理解它应该在数据库中创建一个新行(相反,如果 id 不是nullHibernate 可能会更新现有行在数据库中)。但是我的实体的 id 是int,它运行良好,没有任何错误,我们知道原始实例变量的默认值是0. 所以他说,也许 hibernate 将其0视为特殊对象,并假设该对象是一个新对象。
查看完整描述

3 回答

?
慕工程0101907

TA贡献1887条经验 获得超5个赞

好吧,我们使用非原语,我们有充分的理由这样做。int/Integer例如,我们的许多领域都具有绝对zero有效的商业价值。例如,考虑一个债务字段 - 如果该字段是zero,那就太好了,这意味着您没有债务。

问题在于,对于原语,零是默认值 - 因此您可能会不小心忘记设置它,例如通过 a setDebt,因此它可能会以您从未打算去那里的值到达您的数据库。出于这个原因,我们使用Integer一些永远不应该为空的验证;但即使我们忘记添加适当的验证,该代码也可能会因 a (最好在测试中)而中断NullPointerException我更喜欢 Exception 而不是数据库中的不一致值。


查看完整回答
反对 回复 2021-06-23
  • 3 回答
  • 0 关注
  • 128 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信