Java 休眠ID生成器混乱

Java 休眠ID生成器混乱,java,hibernate,postgresql,Java,Hibernate,Postgresql,我在我的应用程序中使用了Hibernate3.0,使用的是Postgres数据库。它是一个监控应用程序,每分钟收集数据。因此,我们每个月在一些表中有数千行 目前我正在使用序列在hibernate中生成Id。根据这种情况,有没有更好的选择 如果您有任何建议,我们将不胜感激。虽然我不确定是否有比使用序列更好的替代方法,但我非常确定,如果这只是为了收集数据,您会想看看使用。您可以消除所有开销,例如一级缓存、事务性写后等,IMHO序列是最好的方法,因为它为您提供了更大的灵活性,尽管您也可以使用标识(自动

我在我的应用程序中使用了Hibernate3.0,使用的是Postgres数据库。它是一个监控应用程序,每分钟收集数据。因此,我们每个月在一些表中有数千行

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


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

虽然我不确定是否有比使用序列更好的替代方法,但我非常确定,如果这只是为了收集数据,您会想看看使用。您可以消除所有开销,例如一级缓存、事务性写后等,IMHO序列是最好的方法,因为它为您提供了更大的灵活性,尽管您也可以使用标识(自动增量)列。我认为它是postgres,它被称为serial,还有一种方法可以将ID存储在单独的表中。为了解决这三个问题,您可以使用 适当地:

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

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

我的意思是,序列是否足以为大量数据生成id?比如数十亿行?另外,目前我只使用一个序列作为整个数据库?对吗?