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没关上,有待再次实验!