日期:2014-05-17  浏览次数:20599 次

Hibernate的session连接数量为什么会这么大?
这是一个用Hibernate做的一个web项目,启用了Hibernate的Statistics统计功能。刚打开服务器几分钟,控制台输入的Statistics统计信息显示,session打开了330,关闭了323,而且事务只成功提交了一半左右:


然后,几分钟之后,session已经打开了1087,关闭了1077,事务也是提交了一半左右:


2个小时之后,session呈现爆发式的增长,已经打开了433562:


请问:
①Hibernate的这种session数据统计,是叠加式的吗?为什么这个项目的session打开数量这么多,而且随着时间的推移,session打开得越来越多?这种情况是否正常?
②事务的提交为什么每次都只成功提交了一半?是不是另外一半事务没有成功提交?这样是不是导致了数据插入不成功?
请大家帮忙分析一下,感激不尽
Hibernate session 事务

------解决方案--------------------
你写一个连接池吧,估计是你访问了数据库,没有释放链接,导致这样的情况
------解决方案--------------------
是不是链接太多导致提交失败的多了?
------解决方案--------------------
用数据库连接pool吧。jndi、c3p0
------解决方案--------------------
你不配置,他没有的
------解决方案--------------------
<bean id="dataSource"
        class="com.mchange.v2.c3p0.ComboPooledDataSource"
        destroy-method="close">
        <property name="driverClass">
            <value>com.mysql.jdbc.Driver</value>
        </property>
        <property name="jdbcUrl">
        <!-- 192.168.1.60 -->
       <value>jdbc:mysql://localhost:3306/findpeople0221?useUnicode=true&amp;characterEncoding=UTF-8</value> 
        </property>
        <property name="user">
            <value>root</value>
        </property>
        <property name="password">
            <value>123</value>
        </property>
        <property name="minPoolSize">
            <value>5</value>
        </property>
        <property name="maxPoolSize">
            <value>30</value>
        </property>
        <property name="initialPoolSize">
            <value>10</value>
        </property>
        <property name="maxIdleTime">
            <value>60</value>
        </property>

这个是用了c3p0的Spring数据库的设置,配这个要JAR包的,自己上网去找