Postgres和Hibernate:hibernate_sequence是否会在生产中正确生成唯一序列?

时间:2018-09-06 20:53:07

标签: java postgresql hibernate jhipster

女士们,先生们,问候和称呼。

我正在使用JHipster创建一个Java Web应用程序。我已经使用JDL标记语言创建了实体。

好像有一个hibernate_sequence正在被用来生成唯一的ID?这样足以满足生产需求吗?

在插入数据时需要使用此休眠序列。这是休眠插入序列的示例:

INSERT INTO SomeTable VALUES (nextval('hibernate_sequence'), ...,)

为什么我需要这样做?这样会为生产数据库生成唯一的ID吗?

当然,我查看表,但是如果我必须在存储过程中的某个时刻连接表,我不希望有任何麻烦。

1 个答案:

答案 0 :(得分:0)

首先,每个表都有自己的序列是个好主意。这样做很好,因为在一个非常大的数据库中,实际上一个序列上可能存在争用,而且您将更多地“遍历”序列号,因此,即使有1个表包含多个表键,所有DB键也都需要bigint。几百万行(或者对于整数数据类型,您可能会变得太大)

就唯一性而言,您可以使用单个序列而无需任何其他陷阱。序列争用的机会很小,但这仅是在多个表中同时插入一百万个蓝色行的情况下。而我说的是很多行。

我要看的关键是它似乎所有的表都可能使用一个序列,这实际上并不是应该如何执行的。如果有一种简便的方法可以从插入物中删除该代码,则将密钥设置为串行数据类型并让数据库自行管理序列创建要容易得多。