2011-02-25 65 views
0

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

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

任何建议将不胜感激。

回答

1

恕我直言序列是最好的方法,因为它给你更多的灵活性,尽管你也可以使用标识(自动增量)列。我认为它postgres它被称为序列,也有一种方法来存储id在sepearate表中。为了解决这些3的方法,你可以适当地使用 :

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

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

0

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

+0

我的意思是,如果序列足以产生大量数据的ID?说几十亿行?目前,我只使用一个序列为整个数据库?这是对的吗? – nIKUNJ 2011-02-25 07:44:24