原文链接:http://www.blogjava.net/zhip/archive/2006/09/21/71154.html
各种连接池的比较
hibernate开发组推荐c3p0,spring开发组推荐dbcp,但是dbcp连接池有weblogic连接池同样的问题,就是强行关闭连接或数据库重启后,无法 reconnect ,告诉连接被重置,这个设置可以解决。hibernate in action推荐c3p0和proxool。
强烈推荐proxool,因为他不但可以监控后台。还可以有效的释放连接。在connection close时,也就是归还connection,
关闭所有的statement,并且判断是否autocommit,如果不行,就rollback,并且设置true,
可以参考proxool的org.logicalcobwebs.proxool.ConnectionResetter类
connection pool把connection reset置回initial state。
dbcp的配置
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${db.driverClassName}"/>
<property name="url" value="${db.url}"/>
<property name="username" value="${db.username}"/>
<property name="password" value="${db.password}"/>
<property name="validationQuery">
<value>SELECT 1</value>
</property>
<property name="testOnBorrow">
<value>true</value>
</property>
</bean>
c3p0的配置, 注意是''driverClass' , 'jdbcUrl', 'user' , 'password'
<bean id="dataSource"
class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close">
<property name="driverClass">
<value>oracle.jdbc.driver.OracleDriver</value>
</property>
<property name="jdbcUrl">
<value>jdbc:oracle:thin:@218.202.151.179:58580:ORA9I</value>
</property>
<property name="user">
<value>oa</value>
</property>
<property name="password">
<value>XXXX</value>
</property>
<property name="minPoolSize">
<value>15</value>
</property>
<property name="acquireIncrement">
<value>5</value>
</property>
<property name="maxPoolSize">
<value>25</value>
</property>
或
<bean id="c3p0DataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close">
<property name="driverClass">
<value>${db.driverClass}</value>
</property>
<property name="jdbcUrl">
<value>${db.url}</value>
</property>
<!--
<property name="user">
<value>${db.user}</value>
</property>
<property name="password">
<value>${db.pass}</value>
</property>
-->
<property name="properties">
<props>
<prop key="c3p0.acquire_increment">5</prop>
<prop key="c3p0.idle_test_period">100</prop>
<prop key="c3p0.max_size">100</prop>
<prop key="c3p0.max_statements">0</prop>
<prop key="c3p0.min_size">10</prop>
<prop key="user">${db.user}</prop>
<prop key="password">${db.pass}</prop>
</props>
</property>
</bean>
xapool的配置
<bean id="dataSource" class="org.enhydra.jdbc.pool.StandardPoolDataSource" destroy-method="stopPool">
<constructor-arg index="0">
<bean class="org.enhydra.jdbc.standard.StandardConnectionPoolDataSource">
<property name="driverName"><value>com.mysql.jdbc.Driver</value></property>
<property name="url"><value>jdbc:mysql://localhost/dbname</value></property>
</bean>
</constructor-arg>
<property name="user"><value>root</value></property>
<property name="password"><value>mypass</value></property>
<property name="minSize"><value>1</value></property>
<property name="maxSize"><value>5</value></property>
<property name="jdbcTestStmt"><value>select 1</value></property>
</bean>
c-jdbc的配置
<bean id="dataSource" class="org.objectweb.cjdbc.driver.DataSource">
<property name="url"><value>jdbc:cjdbc://127.0.0.1:25322/vdb?user=vuser</value></property>
</bean>
weblogic的连接池解决办法:Test Reserved Connections: 如果选择了这个选项,服务器会在把连接提供给客户端之前
对其进行测试。 Test Created Connections: 如果选择了这个选项,就会在创建一个JDBC
连接之后和在把它添加到JDBC连接池中的可用连接列表之前,对该JDBC连接进行测试。
tomcat的jndi关于dbcp的配置:
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.sybase.jdbc2.jdbc.SybDriver</value>
</parameter>
<parameter>
<name>url</name>
<value>xyz</value>
</parameter>
<parameter>
<name>username</name>
<value>xyz</value>
</parameter>
<parameter>
<name>password</name>
<value>xyz</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>5</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>5</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>-1</value>
</parameter>
<parameter>
<name>removeAbandoned</name>
<value>true</value>
</parameter>
<parameter>
<name>validationQuery</name>
<value>select count(*) from sometable where 1 = 0</value>
</parameter>
<parameter>
<name>testOnBorrow</name>
<value>true</value>
</parameter>
=================================================================
c3p0 连接池
Hibernate 配置文件主要用于配置数据库连接和Hibernate运行时所需要的各种属性(如,连接池,SQL方言,是否现实SQL日志等)。
Hibernate 同时支持 xml 格式的配置文件各传统的 properties 文件配置形式,这里采用 xml 。
配置文件名默认为 hibernate.cfg.xml(或 hibernage.properties),Hibernate在初始化期间自动在 classPath中寻找这个文件,并读取其中的配置信息,并加载。
以下是 hibernate.cfg.xml 文件(在项目 HibernateProject 的src 下放以下内容):
<?xml version="1.0" encoding="GB2312"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- 是否将运行期生成的SQL输出到日志以供调试 -->
<property name="hibernate.show_sql">
true
</property>
<!-- SQL 方言-->
<property name="hibernate.dialect">
org.hibernate.dialect.SQLServerDialect
</property>
<!-- 数据库用户 -->
<property name="hibernate.connection.username">
sa
</property>
<!-- 数据库密码 -->
<property name="hibernate.connection.password">
123456
</property>
<!-- 数据库 JDBC 驱动-->
<property name="hibernate.connection.driver_class">
com.microsoft.jdbc.sqlserver.SQLServerDriver
</property>
<!-- 数据库 URL -->
<property name="hibernate.connection.url">
jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=hbdb
</property>
<!-- 事务管理类型 -->
<!-- Hibernate 3 对包名做了修改 ( net.sf.hibernate => org.hibernate )-->
<property name="hibernate.transaction.factory_class">
org.hibernate.transaction.JDBCTransactionFactory
</property>
<!-- c3p0 连接池 -->
<property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
<property name="hibernate.c3p0.max_size">2</property>
<property name="hibernate.c3p0.min_size">2</property>
<property name="hibernate.c3p0.timeout">50000</property>
<property name="hibernate.c3p0.max_statements">100</property>
<property name="hibernate.c3p0.idle_test_period">3000</property>
<property name="hibernate.c3p0.acquire_increment">2</property>
<property name="hibernate.c3p0.validate">false</property>
<!-- 映射的配置文件,对应数据库表 KELA_STUDENT 的映射文件,在后面将看到这个文件的配置 -->
<mapping resource="com/kela/hb/pojo/KelaStudent.hbm.xml"/>
</session-factory>
</hibernate-configuration>
分享到:
相关推荐
Hibernate自带的连接池算法并不成熟,主要适用于快速开发和学习,而不适合在生产环境中或对性能有较高要求的系统。C3P0作为一个成熟的开源连接池库,提供了许多高级特性,如自动检测空闲连接、连接自动回收、连接池...
【标题】"spring3+hibernate4+springmvc+druid连接池"是一个常见的Java Web开发中的技术栈整合,其中包含了Spring框架的三个主要组件:Spring Core、Spring MVC和Hibernate ORM,以及Druid数据库连接池。这个组合常...
标题“hibernate连接池之tomcat6的配置”涉及到的是如何在Tomcat6服务器中配置Hibernate连接池,以便高效管理数据库连接。这通常是为了优化应用程序的性能和资源利用。以下将详细介绍相关知识点: 1. **Hibernate**...
- **4.3.3.2 Hibernate JDBC和连接(connection)属性**: 包括连接池大小等。 - **4.3.3.3 Hibernate缓存属性**: 控制缓存行为。 - **4.3.3.4 Hibernate事务属性**: 控制事务的隔离级别等。 - **4.3.3.5 其他属性*...
在IT行业中,数据库连接池是优化数据库访问性能的重要技术之一,而Hibernate作为一款流行的Java对象关系映射(ORM)框架,提供了与各种连接池的集成,包括Proxool。本篇将详细介绍如何在Hibernate中使用Proxool作为...
8. **性能调优**:包括批处理、连接池配置、查询优化等方面的知识。 9. **拦截器和事件监听器**:学习如何自定义行为,比如在对象保存或删除前进行额外操作。 10. **JPA集成**:如果需要,可以了解Hibernate作为...
- **连接池**:配置合适的连接池,如 C3P0 或 HikariCP,提高数据库连接的复用性。 **综述** Hibernate 作为 ORM 框架,极大地简化了 Java 应用程序与数据库之间的交互,提供了强大的查询功能和灵活的关联关系管理...
Java数据库连接池是Java应用程序管理数据库连接的一种高效方式。它避免了每次需要访问数据库时创建..."hibernateExample1"可能是一个演示如何在Hibernate项目中集成和使用连接池的具体代码实例,值得我们去学习和实践。
- **JDBC连接**:配置数据库连接池。 - **可选的配置属性**:如SQL方言、外连接抓取等。 - **日志**:配置Hibernate的日志输出。 - **实现NamingStrategy**:自定义命名策略。 4. **持久化类** - **简单的POJO...
### 使用Hibernate连接各种...此外,需要注意的是,在实际部署过程中还需要考虑诸如连接池设置等因素,以提高数据库访问效率并避免资源浪费。希望本文能够帮助大家更好地理解和掌握Hibernate与数据库之间的交互方式。
7. 性能优化:学习如何提升Hibernate应用的性能,包括批处理、延迟加载、集合懒加载、连接池配置、缓存策略调整等。 8. 异常处理:了解Hibernate抛出的常见异常,如ConstraintViolationException、...
- 首先,需将数据库的JDBC驱动添加至Tomcat的全局类路径中,这是为了DBCP连接池软件能正确工作。例如,如果使用PostgreSQL,则需要复制pg73jdbc3.jar(适用于PostgreSQL 7.3和JDK 1.4)至TOMCAT/common/lib目录下。...
2. **连接池**:为了提高性能,Hibernate使用连接池管理数据库连接。常见的连接池工具有C3P0、DBCP和HikariCP等。连接池可以复用已打开的连接,避免频繁创建和关闭连接,从而降低系统开销。 3. **SessionFactory**:...
【Hibernate学习笔记】 Hibernate 是一个流行的 Java 应用程序框架,用于对象关系映射(ORM),它简化了数据库操作,使开发人员能够使用面向对象的编程模型而不是直接编写 SQL 语句。以下是从标题和描述中提取的 ...
`Proxool`是一个开源的连接池实现,它能够帮助我们有效地管理数据库连接,提高系统性能并减少资源消耗。当我们遇到数据库连接断开的情况时,`Hibernate`配合`Proxool`可以实现自动重新连接,确保应用的稳定运行。...
这里我们关注的是两个基础的连接池类,它们在没有Hibernate或Spring等框架支持的纯J2EE环境下使用。这两个类通常是DataSource和ConnectionPool。 1. **DataSource接口**:DataSource是Java的JDBC API中的一个接口,...
【hibernate学习笔记1】 一、理解Hibernate Hibernate是一个流行的Java对象关系映射(ORM)框架,它的主要目的是简化数据库操作,通过将Java对象与数据库表进行映射,使得开发者能够以面向对象的方式处理数据,而...
以下是一个完整的`proxool.properties`配置文件示例,用于配置Proxool连接池: ``` proxool.my_pool_name.driver-url=jdbc:mysql://localhost:3306/mydb proxool.my_pool_name.user=myuser proxool.my_pool_name....
持续更新ing Hibernate 开发学习手册 Hibernate 基本介绍 Hibernate 之 SQL、 HQL查询 Hibernate 之 Criteria 查询 Hibernate 整合 C3P0 连接池
【标题】:“一个简单的hibernate_4 链接Oracle例子” 在Java开发中,Hibernate是一个非常流行的Object-Relational Mapping(ORM)框架,它允许开发者以面向对象的方式处理数据库操作,极大地简化了数据库编程。这...