最近在看有关Hibernate 数据库连接池的问题,确实数据连接池对应用程序的执行效率有很大的搞高,避免了频繁的数据库的连接工作。从GOOGLE中看到个各式各样的连接池的管理,大概总结了一下主要是以下几种。
一>,hibernate 自带的连接池,中要在Hibernate 配置文件 中加上 <property name="connection.pool_size">50</property>
即可,hibernate 的配置文件如下:
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration>
<session-factory>
<property name="connection.username">sa</property>
<property name="connection.url">
jdbc:sqlserver://192.168.1.100:1433;databaseName=TestDB
</property>
<property name="dialect">
org.hibernate.dialect.SQLServerDialect
</property>
<property name="connection.password">sa</property>
<property name="connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
<property name="connection.pool_size">50</property>
<!--实体-->
<mapping class="com.data.entities.User" />
.......
</session-factory>
</hibernate-configuration>
但在 Hibernate 的官方文档中不支持这种做法因为hibernate 对连接池做的还不成熟有BUG,只在学习中可以用到,推荐用下面几种做法。
二>. Hibernate + JNDI +dbcp 连接池
通过JNDI中转DBCP连接池,将数据库操作的连接信息通过DBCP来存储管理。其具体配置如下:
hibernate.cfg.xml 配置如下是:
<session-factory>
<property name="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</property>
<property name="connection.datasource">java:comp/env/jdbc/ManageDB</property>
<!--实体映射-->
<mapping class="com.data.entities.User" />
.....
</session-factory>
</hibernate-configuration>
在项目的webRoot/META-INF 文件夹下面新建 context.xml 添加如下内容
<!DOCTYPE XML>
<Context path="/Manage" docBase="Manage" debug="5" reloadable="true"
crossContext="true" >
<!-- 数据库连接 begin-->
<!-- 被操作库 -->
<Resource name="jdbc/ManageDB"
auth="Container"
type="javax.sql.DataSource"
maxActive="5"
maxIdle="5"
maxWait="5000"
factory="org.apache.commons.dbcp.BasicDataSourceFactory"
driverClassName="net.sourceforge.jtds.jdbc.Driver"
url="jdbc:jtds:sqlserver://192.168.1.100:1433/TestDB"
username="sa"
password="sa"
testOnBorrow="true"
testWhileIdle="true"
validationQuery="select getdate()" />
</Context>
运行即可。(注,要引用两个JAR 文件 commons-dbcp-1.2.1.jar , commons-pool-1.2.jar 和 jtds-1.2.2.jar)
三>, Hibernate + proxool 连接池配置
1,先引用JAR 包 proxool-0.9.1.jar 和 proxool-cglib.jar ,
2,hibernate.cfg.xml
<session-factory>
<property name="hibernate.connection.provider_class">
org.hibernate.connection.ProxoolConnectionProvider
</property>
<property name="hibernate.proxool.pool_alias">MyPool</property>
<property name="hibernate.proxool.xml">proxool.xml</property>
<!--实体映射-->
<mapping class="com.data.entities.User" />
.....
</session-factory>
</hibernate-configuration>
3,在同目录下面配置proxool.xml 文件 ,内容如下:
<!-- the proxool configuration can be embedded within your own application"s.
Anything outside the "proxool" tag is ignored. -->
<something-else-entirely>
<proxool>
<alias>MyPool</alias>
<driver-url>jdbc:sqlserver://192.168.1.100:1433;databaseName=TestDB</driver-url>
<driver-class>com.microsoft.sqlserver.jdbc.SQLServerDriver</driver-class>
<driver-properties>
<property name="user" value="sa"/>
<property name="password" value="sa"/>
</driver-properties>
<maximum-connection-count>80</maximum-connection-count>
<minimum-connection-count>20</minimum-connection-count>
<house-keeping-sleep-time>180000</house-keeping-sleep-time>
<prototype-count>5</prototype-count>
<house-keeping-test-sql>select CURRENT_DATE</house-keeping-test-sql>
</proxool>
</something-else-entirely>
如果想到看proxool 连接池的监控界面就要在web.xml文件中做如下配置
<servlet-name>Admin</servlet-name>
<servlet-class>
org.logicalcobwebs.proxool.admin.servlet.AdminServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Admin</servlet-name>
<url-pattern>/proxool</url-pattern>
</servlet-mapping>
这样当你在浏览器中输入:http://localhost:8080/test/proxool 时就可看到你的配置信息和连接情况。如下图:
四,> hibernate + c3p0 连接池。
首先引用 c3p0-0.9.1.2.jar 包,然后将hibernate.cfg.xml 配置如下:
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration>
<session-factory>
<property name="connection.username">sa</property>
<property name="connection.url">jdbc:sqlserver://192.168.1.100:1433;databaseName=TestDB</property>
<property name="dialect">org.hibernate.dialect.SQLServerDialect</property>
<property name="connection.password">sa</property>
<property name="hibernate.c3p0.max_size">50</property>
<property name="hibernate.c3p0.min_size">5</property>
<property name="hibernate.c3p0.timeout">100</property>
<property name="hibernate.c3p0.idle_test_period">100</property>
<property name="hibernate.c3p0.max_statements">150</property>
<property name="hibernate.c3p0.acquire_increment">3</property>
<property name="hibernate.connection.driver_class">org.hibernate.dialect.SQLServerDialect</property>
<property name="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</property>
<property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
<!--实体-->
<mapping class="gk.data.entities.User" />
......
</session-factory>
</hibernate-configuration>
本人现就职于广州砺锋信息科技有限公司,欢迎咨询!
公司简介
砺锋科技,Java培训官方网站—Java培训,软件培训,人才外包服务
|全国Java培训和技术服务的领导者
|旨在循序渐进将零基础的人用最短的时间最有效的方法打造为 Java领域的顶级开发与创新型人才
相关推荐
首先,C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,提供了对JDBC3规范和JDBC2的标准扩展的支持。使用C3P0能够有效地管理和重用数据库连接,避免频繁创建和销毁连接导致的性能损耗。 在Tomcat6中配置C3P...
C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。其特点包括自动测试连接、空闲连接检测以及多线程并发控制等。C3P0通过配置参数可以调整连接池的大小、超时时间、空闲...
Spring 数据源配置 DBCP、C3P0、BoneCP、JNDI Spring 框架中,数据源配置是一个非常重要的环节。今天,我们将探讨四种常见的数据源配置方式:DBCP、C3P0、BoneCP 和 JNDI。 DBCP(Database Connection Pool) ...
**c3p0**是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,提供了比JDBC更强大的管理功能,比如连接测试、自动关闭、空闲检测等。使用c3p0能有效管理数据库连接,避免频繁建立和关闭连接带来的性能开销,提高系统...
c3p0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,提供了一套配置灵活的API来管理数据库连接。连接池在多线程环境中非常有用,因为它能复用已存在的数据库连接,而不是每次需要时都创建新的连接,从而降低了...
### Spring 数据源配置详解:DBCP、C3P0与JNDI #### 一、引言 在Java企业级应用开发中,数据库连接管理是一个关键环节,它直接影响到应用程序的性能与稳定性。Spring框架提供了丰富的数据访问抽象层,使得开发者...
本章节将深入探讨JDBC编程的进阶主题,包括自定义数据源和使用开源数据源如DBCP(BasicDataSource)和C3P0。了解这些内容能够帮助开发者更高效、更稳定地管理数据库连接,提升应用的性能和可维护性。 首先,让我们...
这三种数据源配置方式各有优缺点。`DriverManagerDataSource`简单易用,但不适合生产环境;`BasicDataSource`提供了连接池,适合生产环境;而通过JNDI查找数据源则适用于分布式环境,能够更好地管理和共享资源。选择...
综上所述,这个文档主要讲述了如何在Tomcat服务器上,通过Hibernate和JNDI数据源配置,使用DBCP连接池连接MySQL数据库。尽管Hibernate官方并不推荐使用DBCP,但文档仍然提供了详细的配置步骤,包括环境准备、数据库...
"数据库连接池dbcp和c3p0jar包"这个压缩包包含了这两个库的JAR文件,开发者可以解压并导入到自己的项目中,然后通过简单的代码配置来启用数据库连接池服务。例如,使用Spring框架,可以在配置文件中声明数据源,指定...
总结来说,Java连接数据库的方式多样,从基础的JDBC直接操作到使用连接池技术,如c3p0和dbcp,以及通过JNDI在应用服务器中管理数据源。根据项目需求和环境选择合适的方法,能有效提升数据库操作的效率和应用程序的...
DBCP、C3P0,JNDI 连接池配置使用,可以参考一下。
### Hibernate 数据源配置详解 #### 一、概述 在Java企业级应用开发中,数据库连接管理是一项基础且关键的工作。为了提高效率并确保资源的有效利用,通常会采用数据源(DataSource)来统一管理数据库连接。...
4. **C3P0**:是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,提供了一套完善的数据库连接池管理机制,用于提高数据库连接的复用性和效率。 在描述中提到的"开发常用工具类"可能包括各种辅助类,如日期时间...
SpringMVC框架结合Java Naming and Directory Interface (JNDI) 和Apache Tomcat服务器进行数据源配置,能够有效地管理和复用数据库连接资源。JNDI作为一组API,提供了Java应用程序访问命名和目录服务的能力,通过...
c3p0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。c3p0提供了许多高级特性,比如自动测试连接、空闲连接检测、连接池大小动态调整等。相比于DBCP,c3p0在连接管理上更为灵活...
C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。C3P0的核心功能包括: 1. **连接池管理**:自动创建、配置并管理数据库连接,避免频繁创建和销毁连接造成的性能开销。 2....
C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,提供了性能优化、连接管理和事务处理等功能。使用C3P0可以提高数据库访问效率,避免频繁创建和关闭数据库连接,从而节省系统资源。C3P0的配置包括初始化连接...