c3p0版本:c3p0-0.9.0、c3p0-0.9.1.2
SessionFactory:工程加入hibernate框架時生成的
出現的問題,每次刷新該應用的網頁後,c3p0連接池都要額外增加。
解決辦法:不用SessionFactory 生成session。換成HibernateUtil來生成session
更改前後代碼比較
更改前
SessionFactory sf = new Configuration().configure().buildSessionFactory();
Session session = sf.openSession();
Transaction tx=session.beginTransaction();
tx.commit();
session.close();
更改後
Session session = null;
session = HibernateUtil.openSession();
session.beginTransaction();
session.flush();
session.getTransaction().commit();
HibernateUtil.closeSession(session);
解決思路:異常提示中,說數據庫連接池的問題,所以想到的是c3p0設置。
檢查了設置之後,發現同樣的設置,不同的應用卻有好有壞。
想到最笨的解決辦法就是:把壞的應用重新寫,按照好的應用的代碼。
後來覺得既然是代碼問題,那就做一下比較,究其根源。
比較代碼後,發現區別如最上所述。
改寫局部代碼後,驗證成功!
二次實驗總結:去掉c3p0設置後,發現每刷新一次應用後,連接池還是繼續增加。不是c3p0問題,是代碼書寫的問題,有可能是session沒關上,有待再次實驗!