用Spring + Hibernate 整合查询数据库的页面如下所示:
这个图中的页面里,有两个查询,一个是查询节目时刻表,一个是查询频道(图中下方的下拉列表框里的频道就是从数据库查出来的)
每刷新几下该页面,数据库就死掉了,用如下命令查看了连接数,发现连接数很多:
select count(*) from v$session;
经过研究,发现原因如下:
我这个程序中,action层调用service层(业务层),业务层又调用DAO层。
我在每个service里面都去通过new ClassPathXmlApplicationContext() 的方法来取得一个容器,从容器中取得dao,这样调用多少次service就new出多少个容器,就取得多少个dao,连接数自然就大了。
解决办法:
将dao通过spring注入给service,而不是在service里面去new一个容器进而得到dao了。这样的话相当于没有领会IOC的精神。
那么action里面如何得到service呢?注意也不要去new ClassPathXmlApplicationContext(),写一个单例类,来取得容器。代码如下:
package cn.com.pattek.util.utilzx;
import org.springframework.context.ApplicationC