【发布时间】:2013-05-09 04:42:13
【问题描述】:
我只为整个程序创建一个会话工厂,并在每次我想要持久化/更新/查询时创建。一个新的实体管理器,但我总是遇到很多连接错误。任何人都可以给我一个建议吗?在我看来,这不是增加 MySql 中允许的连接数的最佳解决方案。我使用 C3P0 进行池化。
【问题讨论】:
-
你完成后是否在
EntityManger上运行close()?你的数据库服务器会不会被其他东西过载? -
在每次持久性和查询操作后,我在 EntityManager 对象上运行 close() 并且数据库服务器是本地的,但来自 mysql 的最大连接数是默认值。如果我将最大连接增加到 500 或 smth。否则我会在以后的执行中出错
-
增加连接限制是一个糟糕的解决方案。我会确保 C3P0 不会尝试分配对数据库来说太大的连接池。否则,您可能会尝试发布一些数据库访问代码供 SO 查看。
-
这里是主数据库代码Pastebin。几乎每个数据库操作都使用此代码的组合运行。
-
您的代码不会始终在
EntityManagers 上运行close()。在您的 try-catch 块中,如果抛出异常,em永远不会关闭。remove()方法甚至没有尝试关闭 em。
标签: java mysql hibernate entitymanager hibernate-entitymanager