JPA实体ID-基元或对象类型(LONG或LONG) [英] JPA entity id - primitive or object type (long or Long)

查看:39
本文介绍了JPA实体ID-基元或对象类型(LONG或LONG)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

您的实体的ID应该是long(基元类型)还是long(对象类型)?

  • 该ID是我的表的主键,并且在数据库中从不为"null"。
  • 我的同事建议使用长对象类型。
  • 默认情况下,Hibernate反向工程工具为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() {
    }

推荐答案

我认为有Long更好,因为通过检查null值(在mysql中,ID值可以是0)来检查实体是否具有持久性标识更正确。还有一些库,比如Spring,在它们的逻辑中基于(D)类型为long(缺省情况下)的ID。有关示例,请参阅此implementation

原语的小优势:它占用的空间更少。

PS:根据JPA规范,两者都是正确的&;并且对此问题的回答在某种程度上是基于意见的。

这篇关于JPA实体ID-基元或对象类型(LONG或LONG)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆