您的实体的ID应该是长(原始类型)还是长(对象类型)?
ID是我的表的主键,在数据库中永远不会为"null".
我的同事建议使用对象类型长.
Hibernate Reverse Engeneering工具默认为id生成一个long类型.
选择什么?长还是长?
@Entity @Table(name = "COUNTRY") public class CountryEntity implements java.io.Serializable { private static final long serialVersionUID = 1L; @Id @Column(name = "ID") private long id; @Column(name = "NAME") private String name; @Column(name = "CURRENCY") private String currency; @Column(name = "PEOPLE") private Long people; @Column(name = "SIZE") private Long size; public CountryEntity() { }
Andrei I.. 23
我认为让Long更好,因为通过检查null
值来检查实体是否具有持久性身份更为正确(在MySQL中,您可以使用值为0的ID).还有一些像Spring这样的库在它们的逻辑中基于Long类型的ID(默认情况下).有关示例,请参阅此实现.
原语的一小优点:它占用的空间更少.
PS:根据JPA规范,两者都是正确和支持的,并且这个问题的答案在某种程度上是基于意见的.
我认为让Long更好,因为通过检查null
值来检查实体是否具有持久性身份更为正确(在MySQL中,您可以使用值为0的ID).还有一些像Spring这样的库在它们的逻辑中基于Long类型的ID(默认情况下).有关示例,请参阅此实现.
原语的一小优点:它占用的空间更少.
PS:根据JPA规范,两者都是正确和支持的,并且这个问题的答案在某种程度上是基于意见的.
我更喜欢Long,这是因为如果您让数据库为您生成ID(您应该这样做),原因很简单,您可以通过检查来告知最近实例化的CountryEntity对象尚未持久化id==null
。如果使用long,则id将始终具有非null值(最初为0),该值在保留实体时会更改。