java - Hibernate ID 生成器困惑

标签 java hibernate postgresql

我在我的应用程序中使用 Hibernate 3.0Postgres 数据库。它是一个监控应用程序,每分钟收集数据。所以每个月我们的一些表中有数千行。

目前我正在使用序列在 hibernate 中生成Id。根据这种情况,还有更好的选择吗?

如有任何建议,我们将不胜感激。

最佳答案

恕我直言,序列是最好的方法,因为它为您提供了更大的灵 active ,尽管您也可以使用标识(自动增量)列。我认为 postgres 它被称为串行,还有一种方法可以将 id 存储在单独的表中。要解决这 3 种方法,您可以使用 适本地:

@GeneratedValue(strategy=GenerationType.TABLE)
@GeneratedValue(strategy=GenerationType.SEQUENCE)
@GeneratedValue(strategy=GenerationType.IDENTITY)

至于您之前的问题,对所有表使用单一序列是否好。我不推荐这种方法,因为数据库必须断言所有序列号都是唯一的,这就是每个序列生成的值需要由数据库服务器同步的原因。如果每个数据库只有一个序列,当来自多个表的多个请求请求下一个 id 值时,可能会导致性能问题。我宁愿建议每个表都有一个序列。

关于java - Hibernate ID 生成器困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5114709/

相关文章:

postgresql - 从 Db 中读取字节作为字符串

ruby-on-rails - 如何编写不区分大小写的查询并仅返回 Rails 中的唯一记录

Java 8 文档日期时间教程错误

java - 空指针异常(循环遍历对象数组)

java - 数据库未在实体类上使用注释创建

hibernate - Grails BuildConfig.groovy中的Hibernate范围

sql - 显示两行之间变化的所有列

java.lang.NoClassDefFoundError : com/google/gwt/core/client/GWTBridge

java - 在 Postgres 和 Java 中将字符串转换为 UUID

java - 使用 JPA 查找订单的总价