2013-05-14 53 views
0

我只为整个程序创建一个会话工厂,并且每次创建时我都想要保留/更新/查询smth。一个新的实体经理,但我总是遇到很多连接错误。任何人都可以给我一个礼物吗?在我看来,它不能是增加MySql中允许的连接数的最佳解决方案。我用C3P0进行池化。Entitymanager,连接太多

+0

当您完成后,您是否在'EntityManger'上运行'close()'?你的数据库服务器能否被其他东西重载? –

+0

在每次持久性和查询操作后,我在EntityManager对象上运行close()并且数据库服务器是本地的,但是来自mysql的最大连接数是默认值。如果即时将最大连接数增加到500或不适用。否则我会在后面的执行中出错 – Aruscher

+0

增加连接限制是一个不好的解决方案。我会确保C3P0不会尝试分配对数据库来说太大的连接池。否则,您可能会尝试发布一些数据库访问代码以供查看。 –

回答

1

每次调用EntityManager时,都可以尝试使用像这样的try-catch-finally模板。

EntityManager em = ... //However you get an em. 
try { 
    em.getTransaction().begin(); 

    // ... Put your persistence code here. 

    em.getTransaction().commit(); 
} catch (Exception ex) { 
    em.getTransaction().rollback(); 
    throw ex; 
} finally { 
    em.close(); 
} 
+0

非常感谢 – Aruscher