Hibernate ID Generator混乱

时间:2011-02-25 07:31:24

标签: java hibernate postgresql

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

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

任何建议都将受到赞赏。

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

虽然我不确定是否有比使用序列更好的替代方案,但我很确定如果只是为了收集数据,你会想要使用StatelessSession。您可以摆脱所有开销,例如第一级缓存,事务性后写等