程序正常启动后获得正常的连接数,在设定的时间内也正常释放了,但是一旦用户登录后数据库的连接sleep就超过设置的时间不再释放,程序中opensession的地方也已经手动关闭了,请问各位是属于什么问题? hibernate.cfg.xml配置文件如下:
[code="java"]
update
<property name="hibernate.default_schema">demo_new</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password"></property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/demo_new</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
<!-- 连接池 -->
<property name="hibernate.connection.provider_class">
org.hibernate.connection.C3P0ConnectionProvider</property>
<property name="hibernate.current_session_context_class">thread</property>
<!-- 间隔多少秒检查空闲的连接,这里为了测试设置为30秒-->
<property name="hibernate.c3p0.idle_test_period">30</property>
<!-- hibernate.c3p0.timeout是设置c3p0.maxIdleTime,单位是秒 ,这里为了测试设置为30秒-->
<property name="hibernate.c3p0.timeout">30</property>
<!-- 最大连接数-->
<property name="hibernate.c3p0.max_size">300</property>
<!-- 保持最小的连接数-->
<property name="hibernate.c3p0.min_size">15</property>
<!-- 每次获取连接的数量 -->
<property name="hibernate.c3p0.acquire_increment">5</property>
<property name="hibernate.bytecode.use_reflection_optimizer">
false
</property>
<!--
JDBC的标准参数,用以控制数据源内加载的PreparedStatements数量。但由于预缓存的statements
属于单个connection而不是整个连接池。所以设置这个参数需要考虑到多方面的因素。
如果maxStatements与maxStatementsPerConnection均为0,则缓存被关闭。Default: 0
-->
<property name="hibernate.c3p0.max_statements">50</property>
<!--Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数-->
<property name="hibernate.jdbc.fetch_size">100</property>
<!--Batch Size是设定对数据库进行批量删除,批量更新和批量插入的时候的批次大小,有点相当于设置Buffer缓冲区大小的意思-->
<property name="hibernate.jdbc.batch_size">50</property>
<!--
+ | 在数据插入数据库之后,允许使用JDBC3 PreparedStatement.getGeneratedKeys() |
来获取数据库生成的key(键)。需要JDBC3+驱动和JRE1.4+, | 如果你的数据库驱动在使用Hibernate的标
识生成器时遇到问题,请将此值设为false. | 默认情况下将使用连接的元数据来判定驱动的能力. +
-->
<property name="hibernate.jdbc.use_get_generated_keys">true</property>
<!-- 强制Hibernate按照被更新数据的主键,为SQL更新排序。这么做将减少在高并发系统中事务的死锁。 -->
<property name="hibernate.order_updates">true</property>
<property name="hibernate.connection.charSet">utf8</property>
<property name="hibernate.connection.characterEncoding">utf8</property>
<property name="hibernate.connection.useUnicode">true</property>
<property name="hibernate.show_sql">false</property>
<property name="hibernate.format_sql">false</property>
<property name="hibernate.use_sql_comments">false</property>
<mapping package="com.pjgw.assetsys.entity" />
........
[/code]