SessionFactory重複新建冗餘的連接池的問題

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沒關上,有待再次實驗!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章