我一直在我的桌面上使用Hibernate + HSQLDB为我的应用程序开发数据库适配器。出于传统原因,这些ID由应用程序以字符串形式生成。所有工作都很好。休眠无法在大型数据库上启动
现在,我们有一个pre-prod数据库,有超过一百万条记录。我不得不在Hibernate方面做一些修改(例如标识符太长),但没有什么重要的。
也就是说,直到我解决了这个问题。当我尝试在预产品服务器上启动我的应用程序时,Hibernate开始创建一个gazillion查询,最终结束于OutOfMemoryError:Java堆空间。增加堆最大值没有帮助。
我禁用了C3PO缓存设置并禁用了hibernate.hbm2ddl.auto。我不知道为什么它正在做这些查询,我不知道如何禁用它们。
任何人都可以帮助我??????
它正在执行什么样的查询? Hibernate不会自行查询,因为你的应用程序要求它发布它们。 – skaffman 2009-10-19 07:58:06
你说得对。我在启动时做了一个虚拟查询,以确保我们触及了数据库。我删除了那个,我可以启动应用程序。但是这只是改变了问题,因为执行任何DB请求时,gazillion查询都会执行。 – malaverdiere 2009-10-19 08:33:03