gpt4 book ai didi

java - 在 hibernate 映射中使用包装器整数类或 int 原语

转载 作者:IT老高 更新时间:2023-10-28 20:51:53 24 4
gpt4 key购买 nike

在我工作的公司中,我们主要讨论是否应该更好地为基元(java.lang.Integer、java.lang.Long)使用包装类,还是直接在在 Hibernate 中将实体映射到表的 POJO。

我们的想法是我们希望这些值在数据库中不为空。

支持使用原语的论据:

  • 将这些值作为 int 处理意味着它们永远不能为空,在这样就不可能无意中获得空引用在球场上。
  • int=32/64 位内存。整数 = 16 字节内存而且速度也较慢

支持使用包装对象的论据:

  • 我们可以在数据库级别添加一个约束来始终防止 null到达那里的值(value)
  • 我们最终可能会得到误导性数据,我们可以每当用户没有时,数据库中有 0 而不是空值设置一个值和错误的数据是一个棘手的问题。
  • 对象比基元具有更强的表现力。我们有空值,还有整数值,因此我们可以使用注释更轻松地验证它们示例 (javax.validation.constraints.NotNull)。

最佳答案

使用包装器,让您的生活变得简单。

您的数据模型应该规定这一点。无论如何,您应该在数据库中强制执行可空性。

如果它们在数据库中可以为空,则使用包装器。如果它们不可为空,并且您使用了包装器,那么如果您尝试将空值插入数据库,则会出现异常。

如果您的数据模型没有规定,那么请遵循约定,始终使用包装器。这样人们就不必思考或决定值 0 意味着 null。

我还会质疑您的断言,即它的性能会降低。你测量过这个吗?我的意思是真的测量过吗?当您与数据库交谈时,除了 16 位和 32 位之间的区别之外,还有更多的考虑因素。

只需使用简单、一致的解决方案即可。在任何地方都使用包装器,除非有人给你一个非常很好的理由(具有准确的测量统计数据)否则。

关于java - 在 hibernate 映射中使用包装器整数类或 int 原语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7506802/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com