`
zhchx0827
  • 浏览: 192306 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

hibernate学习:各种连接池的比较(一)

阅读更多
原文链接: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连接池

    Hibernate自带的连接池算法并不成熟,主要适用于快速开发和学习,而不适合在生产环境中或对性能有较高要求的系统。C3P0作为一个成熟的开源连接池库,提供了许多高级特性,如自动检测空闲连接、连接自动回收、连接池...

    spring3+hibernate4+springmvc+druid连接池

    【标题】"spring3+hibernate4+springmvc+druid连接池"是一个常见的Java Web开发中的技术栈整合,其中包含了Spring框架的三个主要组件:Spring Core、Spring MVC和Hibernate ORM,以及Druid数据库连接池。这个组合常...

    hibernate连接池之tomcat6的配置

    标题“hibernate连接池之tomcat6的配置”涉及到的是如何在Tomcat6服务器中配置Hibernate连接池,以便高效管理数据库连接。这通常是为了优化应用程序的性能和资源利用。以下将详细介绍相关知识点: 1. **Hibernate**...

    Hibernate 联接池 proxool例子和jar包

    在IT行业中,数据库连接池是优化数据库访问性能的重要技术之一,而Hibernate作为一款流行的Java对象关系映射(ORM)框架,提供了与各种连接池的集成,包括Proxool。本篇将详细介绍如何在Hibernate中使用Proxool作为...

    Hibernate 中文api 等学习资料

    8. **性能调优**:包括批处理、连接池配置、查询优化等方面的知识。 9. **拦截器和事件监听器**:学习如何自定义行为,比如在对象保存或删除前进行额外操作。 10. **JPA集成**:如果需要,可以了解Hibernate作为...

    hibernate学习总结文档

    - **连接池**:配置合适的连接池,如 C3P0 或 HikariCP,提高数据库连接的复用性。 **综述** Hibernate 作为 ORM 框架,极大地简化了 Java 应用程序与数据库之间的交互,提供了强大的查询功能和灵活的关联关系管理...

    Java数据库连接池的使用示例

    Java数据库连接池是Java应用程序管理数据库连接的一种高效方式。它避免了每次需要访问数据库时创建..."hibernateExample1"可能是一个演示如何在Hibernate项目中集成和使用连接池的具体代码实例,值得我们去学习和实践。

    精通 Hibernate:Java 对象持久化技术详解(第2版

    7. 性能优化:学习如何提升Hibernate应用的性能,包括批处理、延迟加载、集合懒加载、连接池配置、缓存策略调整等。 8. 异常处理:了解Hibernate抛出的常见异常,如ConstraintViolationException、...

    hibernate数据库连接

    2. **连接池**:为了提高性能,Hibernate使用连接池管理数据库连接。常见的连接池工具有C3P0、DBCP和HikariCP等。连接池可以复用已打开的连接,避免频繁创建和关闭连接,从而降低系统开销。 3. **SessionFactory**:...

    数据库连接池的两个类

    这里我们关注的是两个基础的连接池类,它们在没有Hibernate或Spring等框架支持的纯J2EE环境下使用。这两个类通常是DataSource和ConnectionPool。 1. **DataSource接口**:DataSource是Java的JDBC API中的一个接口,...

    hibernate学习笔记1

    【hibernate学习笔记1】 一、理解Hibernate Hibernate是一个流行的Java对象关系映射(ORM)框架,它的主要目的是简化数据库操作,通过将Java对象与数据库表进行映射,使得开发者能够以面向对象的方式处理数据,而...

    proxool-0.9.1 Hibernate 的常用链接池技术 附带配置 一学就会

    以下是一个完整的`proxool.properties`配置文件示例,用于配置Proxool连接池: ``` proxool.my_pool_name.driver-url=jdbc:mysql://localhost:3306/mydb proxool.my_pool_name.user=myuser proxool.my_pool_name....

    Hibernate 开发学习手册.CHM

    持续更新ing Hibernate 开发学习手册 Hibernate 基本介绍 Hibernate 之 SQL、 HQL查询 Hibernate 之 Criteria 查询 Hibernate 整合 C3P0 连接池

    一个简单的hibernate_4 链接Oracle例子

    【标题】:“一个简单的hibernate_4 链接Oracle例子” 在Java开发中,Hibernate是一个非常流行的Object-Relational Mapping(ORM)框架,它允许开发者以面向对象的方式处理数据库操作,极大地简化了数据库编程。这...

    Hibernate学习的笔记

    【Hibernate学习笔记】 Hibernate 是一个流行的 Java 应用程序框架,用于对象关系映射(ORM),它简化了数据库操作,使开发人员能够使用面向对象的编程模型而不是直接编写 SQL 语句。以下是从标题和描述中提取的 ...

    Struts2 Spring3 Hibernate2 JPA2 Proxool连接池

    本项目采用Struts2、Hibernate3集成JPA2、Spring3和Proxool连接池的集成,对整体SSH框架的数据访问及网站效率都有较大的提升,本项目即时部署即可使用,既满足新手的学习,也对有深层研究的朋友有帮助。

    hibernate连接Orcale

    在IT行业中,Hibernate和Oracle是两个...在实际开发中,可能还需要关注性能优化、连接池配置、异常处理等方面,确保系统稳定高效运行。学习和掌握Hibernate与Oracle的结合使用,将有助于提升开发效率,降低维护成本。

    hibernate3.5.6开发包

    10. **性能优化**:包括延迟加载(lazy loading)、批处理(batch processing)、预加载(preloading)、连接池(connection pool)等技术,都是Hibernate性能优化的重要手段。 **标签:“Hibernate”** 在实际...

    hibernate学习总结

    例如,可以配置连接池、缓存策略、实体类的主键生成策略等。 Session是Hibernate的主要工作接口,它提供了与数据库交互的方法,如save、get、update、delete等。Session内部维护了一级缓存,用于存储当前Session中...

    hibernate学习的最好资料

    在这个“hibernate学习的最好资料”压缩包中,虽然没有直接包含Hibernate的教程文件,但从标签和提供的文件名,我们可以推测这可能是一个学习资源集合,包含了与ORM技术和相关技术的学习资料。 首先,让我们从标签...

Global site tag (gtag.js) - Google Analytics