在休眠映射中使用包装器 Integer 类或 int 基元
2022-08-31 22:32:00
在我工作的公司中,我们进行了一次重大讨论,讨论是否应该更好地对基元(java.lang.Integer,java.lang.Long)使用包装类,或者是否直接在将实体映射到Hibernate中的表的POJO中使用基元类型。
我们的想法是,我们希望这些值在数据库中不为 null。
支持使用基元的论据:
- 将这些值作为 int 处理意味着它们永远不可能为 null,这样就不可能无意中获取字段上的 null 引用。
- int=32/64 位内存。整数 = 16 字节的内存,并且速度也较慢
支持使用包装器对象的参数:
- 我们可以在数据库级别添加约束,以始终防止空值到达那里
- 我们最终可能会得到误导性的数据,每当用户没有设置值时,我们可以在数据库中使用0而不是null,而错误的数据是一个困难的陷阱。
- 对象比基元具有更强的表现力。我们有空值和整数值,因此我们可以使用注释更轻松地验证它们(javax.validation.constraints.NotNull)。