2013-05-14 144 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