SessionFactory重复新建冗余的连接池的问题

来源:互联网 发布:免费拆单软件 编辑:程序博客网 时间:2024/06/08 00:56

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

原创粉丝点击