论坛首页 Java企业应用论坛

通过Hibernate属性文件,用DBCP包进行数据库连接池的配置

浏览 18070 次
该帖已经被评为精华帖
作者 正文
   发表时间:2004-06-10  
Hibernate支持DBCP包进行数据库连接池的配置。简要说明配置过程:
(仅仅是个人摸索,如有问题,欢迎指点)
需要的包:
  Commons-Pool (下载地址:http://jakarta.apache.org/commons/pool/) :提供一个一般对象池的接口,而且包含实现了通常池工具箱。
  Commons-DBCP(下载地址:http://jakarta.apache.org/commons/dbcp/) :提供数据库连接池服务。DBCP很聪明,把Commons-Pool和JDBC的driver封装起来,使达到连接池的目的。

Hibernate属性文件的配置参数
#连接池的最大活动个数
hibernate.dbcp.maxActive 100 
#当连接池中的连接已经被耗尽的时候,DBCP将怎样处理( 0 = 失败, 1 = 等待, 2= 增长)
hibernate.dbcp.whenExhaustedAction 1 
#最大等待时间
hibernate.dbcp.maxWait 120000
#没有人用连接的时候,最大闲置的连接个数。
hibernate.dbcp.maxIdle 10
##以下是对prepared statement的处理,同上。
hibernate.dbcp.ps.maxActive 100
hibernate.dbcp.ps.whenExhaustedAction 1
hibernate.dbcp.ps.maxWait 120000
hibernate.dbcp.ps.maxIdle 10

## 可选,是否对池化的连接进行验证
#给出一条简单的sql语句进行验证
#hibernate.dbcp.validationQuery select 1 from dual
#在取出连接时进行有效验证
#hibernate.dbcp.testOnBorrow true
#在放回连接时进行有效验证
#hibernate.dbcp.testOnReturn false

#Hibernate已经实现了DBCP Provider实现,别忘了在下面的键值去掉#字符
hibernate.connection.provider_class net.sf.hibernate.connection.DBCPConnectionProvider
   发表时间:2004-06-17  
我看官方文档中的例子是用Tomcat的连接池来完成对数据库连接的。

我还看到某些文档直接在JBuilder中开发Hibernate的应用,请问,这种情况下,是否也需要在hibernate.cfg.xml中指定数据库的连接方式。
但是我看那个文档中并没有指定。

盼斧正,谢谢了。^_^
0 请登录后投票
   发表时间:2004-06-18  
楼上,用Tomcat大概是直接用jndi找到连接的吧。

我贴一个xml的:


		<property name="connection.pool.size">2</property>
		<property name="statement_cache.size">25</property>
		<property name="jdbc.fetch_size">50</property>
		<property name="jdbc.batch_size">30</property>
		
		<property name="show_sql">true</property>
		<property name="connection.provider_class">net.sf.hibernate.connection.DBCPConnectionProvider</property>
		<property name="dbcp.maxActive">100</property>
		<property name="dbcp.whenExhaustedAction">1</property>
		<property name="dbcp.maxWait">120000</property>
		<property name="dbcp.maxIdle">10</property>
		<property name="dbcp.ps.maxActive">100</property>
		<property name="dbcp.ps.whenExhaustedAction">1</property>
		<property name="dbcp.ps.maxWait">120000</property>
		<property name="dbcp.ps.maxIdle">100</property>

0 请登录后投票
   发表时间:2007-02-14  
《精通hibernate java对象持久化技术详解>>那本书说 :hiberante开发组优先推荐的是 C3P0和Proxool, 而 DBCP只是支持而已。
0 请登录后投票
   发表时间:2007-02-22  
引用
DBCP很聪明,把Commons-Pool和JDBC的driver封装起来,使达到连接池的目的。

DBCP在底层的连接池是用Commons-Pool去实现的,也就是说,连接池是在对象池之上的。

它对JDBC driver只是一个封装,譬如jdbc的getConnection,其实得到的Connection不是真正的Connection,而是一个proxy Connection,这样,方便close等操作,譬如,close就是将该连接直接释放到连接池,而不是关闭。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics