Hibernate无法在大型数据库上启动

时间:2009-10-19 07:56:23

标签: hibernate performance startup

我一直在桌面上使用Hibernate + HSQLDB为我的应用程序开发数据库适配器。由于遗留原因,应用程序将ID作为字符串生成。一切都工作正常。

现在,我们有一个pre-prod数据库,有超过一百万条记录。我不得不在Hibernate方面进行一些更改(例如标识符太长),但没什么大不了的。

也就是说,直到我遇到这个问题。当我尝试在pre-prod服务器上启动我的应用程序时,Hibernate开始进行大量的查询,最终会出现在OutOfMemoryError:Java堆空间中。增加堆最大值没有帮助。

我已禁用C3PO缓存设置并禁用了hibernate.hbm2ddl.auto。我不知道为什么要进行这些查询,我不知道如何禁用它们。

任何人都可以帮助我??????

1 个答案:

答案 0 :(得分:1)

你告诉Hibernate要急切地去取。因此,当您加载第一个对象时,Hibernate也会开始获取所有相关对象。

您必须将所有不必要的关系设置为fetch=LAZY