我应该在JPA2.0中使用Primitives或包装器吗?

Jav*_*aby 13 java hibernate jpa-2.0

我在SO上看到了这个问题,这往往会导致Primitives,并且也会从coderanch看到这个问题,这往往会导致包装.两者都略显陈旧.

我没有任何特殊需求,只想了解标准的良好做法.

网络上的例子也是混合的.例如,有些像这样:

@Id
@Column(name = "CUSTOMER_ID")
public long customerId;
Run Code Online (Sandbox Code Playgroud)

其他人使用Wrappers:

@Id
@Column(name = "CUSTOMER_ID")
public Long customerId;
Run Code Online (Sandbox Code Playgroud)

Joh*_*sen 16

两者之间的区别是可空性.基本类型不能为null,而"Wrapped"类型可以为null.

我更喜欢使用包装类型,因为您可以判断对象是否已保存/加载到数据库中,无论id值是否为null.

我不认为这里有"最佳实践",也许是风格问题?

  • 我想说一个可以为空的“保存度”指标是一个很好的做法。(无论是 ID 还是版本/时间戳列。) (2认同)

Õzb*_*bek 5

Hibernate建议您:

我们建议您在持久性类上声明以统一名称命名的标识符属性,并使用可为空(即非原始)类型。更多

  • 这仅用于标识符属性,而不是一般建议。 (4认同)