Code Bye

关于hibernate的pool size的问题

 

软件环境: 
Jsp+hibernate+struts 
配置文件: 
<property name=”dialect”>net.sf.hibernate.dialect.OracleDialect</property> 
<property name=”connection.driver_class”>oracle.jdbc.driver.OracleDriver</property> 
<property name=”connection.username”>exam</property> 
<property name=”connection.password”>exam</property> 
<property name=”connection.url”>jdbc:oracle:thin:@192.168.0.24:1521:orcl</property> 

<property name=”connection.pool.size”>1</property> 
<property name=”statement_cache.size”>25</property> 
<property name=”jdbc.fetch_size”>50</property> 
<property name=”jdbc.batch_size”>30</property> 

调试的时候程序显示debug信息为 
DEBUG http8080-Processor2 net.sf.hibernate.connection.DriverManagerConnectionProvider – using pooled JDBC connection, pool size: 0 
………. 
DEBUG http8080-Processor2 net.sf.hibernate.connection.DriverManagerConnectionProvider – returning connection to pool, pool size: 1 
……….. 
DEBUG http8080-Processor2 net.sf.hibernate.connection.DriverManagerConnectionProvider – using pooled JDBC connection, pool size: 1 
………. 
DEBUG http8080-Processor2 net.sf.hibernate.connection.DriverManagerConnectionProvider – returning connection to pool, pool size: 2 
……… 
DEBUG http8080-Processor2 net.sf.hibernate.connection.DriverManagerConnectionProvider – using pooled JDBC connection, pool size: 2 
………. 
DEBUG http8080-Processor2 net.sf.hibernate.connection.DriverManagerConnectionProvider – returning connection to pool, pool size: 3 

如果每次查询操作都能成功释放连接那么jdbc连接数和连接池连接数是不是应该不变? 
总保持0和1? 
程序每次执行都会执行session.close(),为什么还会有连接不能释放呢?

这样会不会导致程序运行时间长以后资源耗尽而死掉?
50分
我不知道,但可以帮你UP几下
谢谢楼上,
没人知道吗?
随便说点也行啊!
50分
创建数据库连接是需要很大的资源开销的。如果每次用完就关闭,那么下次连接时又要消耗大量资源。

连接池的概念就是保证一定的连接数,以节省连接的时间。至于接口.close(),你不要信他,他只是把连接回送给连接池管理,并不是真的关闭,是否关闭这个连接,由连接池自己决定。


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明关于hibernate的pool size的问题