这里介绍几种最常见的连接池配置:

  【说明:在hibernate3.0中,已经不再支持dbcp了,hibernate的作者在hibernate.org中,明确指出在实践中发现dbcp有BUG,在某些种情会产生很多空连接不能释放,所以抛弃了对dbcp的支持。因此,本文也不再列出dbcp的相关配置】

1 =================== C3P0 配置 =============================

在hibernate的配置文件中加入如下配置

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- 配置事务实现方式 -->
<property name="transaction.factory_class">
org.hibernate.transaction.JDBCTransactionFactory
</property> <!-- 配置JDBC里batch的大小 -->
<property name="jdbc.batch_size">50</property>
<property name="cache.use_second_level_cache">false</property> <!-- 配置线程安全的session -->
<property name="current_session_context_class">thread</property> <!-- 显示SQL -->
<property name="show_sql">true</property>
<property name="format_sql">true</property> <!-- 配置数据库方言 -->
<property name="dialect">org.hibernate.dialect.Oracle9Dialect</property> <!-- 配置数据库连接 -->
<property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="connection.username">0804</property>
<property name="connection.password">0804</property>
<property name="connection.url">jdbc:oracle:thin:@192.168.0.200:1521:orcl</property> <!-- 配置连接池 -->
<property name="c3p0.max_size">2</property>
<property name="c3p0.min_size">2</property>
<property name="c3p0.timeout">5000</property>
<property name="c3p0.max_statements">100</property>
<property name="c3p0.idle_test_period">3000</property>
<property name="c3p0.acquire_increment">2</property>
<property name="c3p0.validate">false</property> <!-- 指定hibernate管理的映射文件 -->
<mapping resource="com/ket/ruan/so/entity/User.hbm.xml"/>
<mapping resource="com/ket/ruan/so/entity/Product.hbm.xml"/>
。。。。。
</session-factory>
</hibernate-configuration>

2 ============= 使用 proxool =============================

在hibernate的配置文件中加入如下配置

<hibernate-configuration>
<session-factory>
<property name="show_sql">true</property>
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property> <!-- 配置proxool属性 -->
<!--- 使用proxoolConf.xml中定义的别名 -->
<property name="proxool.pool_alias">pool1</property>
<!-- 指定使用的proxoolConf文件的位置(这里在SRC下)-->
<property name="proxool.xml">ProxoolConf.xml</property>
<property name="connection.provider_class">
org.hibernate.connection.ProxoolConnectionProvider
</property>
....
<!-- 指定hibernate管理的映射文件 -->
<mapping resource="com/ket/ruan/so/entity/User.hbm.xml"/>
....
</hibernate-configuration>

------------ProxoolConf.xml--------------------

xml 文件放在同级目录中 ,此外,还需要新增两个jar包:
  proxool-0.9.1.jar

  proxool-cglib.jar

<?xml version="1.0" encoding="gb2312"?>
<something-else-entirely>
<proxool>
<alias>pool1</alias>
<driver-url>
jdbc:mysql://tpdb:3306/tpdb
</driver-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<driver-properties>
<property name="user" value="username"/>
<property name="password" value="password"/>
<!-- 自动重连 -->
<property name="autoReconnect" value="true"/>
</driver-properties>
<!-- proxool自动侦察各个连接状态的时间间隔(毫秒),
侦察到空闲的连接就马上回收,超时的销毁-->
<house-keeping-sleep-time>90000</house-keeping-sleep-time>
<!-- 指因未有空闲连接可以分配而在队列中等候的最大请求数,超过这个请求数的
用户连接就不会被接受(正式库10,测试库1)-->
<maximum-new-connections>10</maximum-new-connections>
<!-- 最少保持的空闲连接数(正式库10,测试库1)-->
<prototype-count>10</prototype-count>
<!-- 连接池允许的最大连接数(正式库700,测试库10)-->
<maximum-connection-count>700</maximum-connection-count>
<!-- 连接池开启的最小连接数(正式库350,测试库5)-->
<minimum-connection-count>350</minimum-connection-count>
<!-- 一个活动连接的最长时间15分钟,单位毫秒 -->
<maximum-active-time>900000</maximum-active-time>
<!-- 一个连接的最长活动时间4小时,单位毫秒 -->
<maximum-connection-lifetime>14400000</maximum-connection-lifetime>
<!-- 自动检查连接是否断掉开关 -->
<test-before-use>true</test-before-use>
<!-- 自动检查连接是否断的测试sql语句 -->
<house-keeping-test-sql>select sysdate() from dual</house-keeping-test-sql>
</proxool>
</something-else-entirely>

===========  连接池监控 =================== 
1.在web.xml中加上下面这段

  <servlet>
<servlet-name> proxool </servlet-name>
<servlet-class>org.logicalcobwebs.proxool.admin.servlet.AdminServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name> proxool </servlet-name>
<url-pattern> /Admin/proxool/ </url-pattern>
</servlet-mapping>

2.http://localhost:8080/testhibernate/Admin/proxool 
就可以监控到连接池的状况了!

Hibernate游记——装备篇《三》(连接池的使用)的更多相关文章

  1. Hibernate游记——装备篇《一》(基础配置详解)

    Hibernate配置文件可以有两种格式,一种是 hibernate.properties ,另一种是 hibernate.cfg.xml 后者稍微方便一些,当增加hbm映射文件的时候,可以直接在 h ...

  2. Hibernate游记——装备篇《二》(基础配置示例)

    <?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hi ...

  3. Hibernate事务、缓存和连接池

    一.事务 1.数据库事务的概念 数据库事务是指由一个或多个SQL语句组成的工作单元,这个工作单元中的SQL语句相互依赖,如果有一个SQL语句执行失败,就必须撤销整个工作单元.在并发环境中,多个事务同时 ...

  4. MySQL-第十五篇使用连接池管理连接

    1.数据库连接池的解决方案是: 当应用程序启动时,系统主动建立足够的数据库连接,并将这些连接组成一个连接池.每次应用程序请求数据库连接时,无需重新打开连接,而是从连接池中取出已有的连接使用,使用完后不 ...

  5. Hibernate游记——盘缠篇(jar包)

    需要的jar包我都放我百度网盘了 jar(包含注解需要的jar)包传送门:http://pan.baidu.com/s/1o60OYvg

  6. Hibernate整合C3P0实现连接池

    Hibernate整合C3P0实现连接池 hibernate中可以使用默认的连接池,无论功能与性能都不如C3PO(网友反映,我没有测试过),C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI ...

  7. Hibernate查询、连接池、二级缓存

    Hibernate第三天: 1. 对象状态 2. session缓存 3. lazy懒加载 4. 映射 一对一对映射 组件/继承映射 目标: 一.hibernate查询 二.hibernate对连接池 ...

  8. Hibernate【查询、连接池、逆向工程】

    前言 在Hibernate的第二篇中只是简单地说了Hibernate的几种查询方式....到目前为止,我们都是使用一些简单的主键查询阿...使用HQL查询所有的数据....本博文主要讲解Hiberna ...

  9. Hibernate的配置中,c3p0连接池相关配置

    一.配置c3p0 1.导入 hibernate-c3po连接池包,Maven地址是:http://mvnrepository.com/artifact/org.hibernate/hibernate- ...

随机推荐

  1. spring bean的介绍以及xml和注解的配置方法

    5.Bean 下边我们来了解一下Bean的: Bean的作用域Bean的生命周期Bean的自动装配Resources和ResourceLoader 5.1Bean容器的初始化 Bean容器的初始化 两 ...

  2. nginx站点目录及文件URL访问控制

    一.根据扩展名限制程序和文件访问 利用nginx配置禁止访问上传资源目录下的PHP.Shell.Perl.Python程序文件. 配置nginx,禁止解析指定目录下的指定程序. location ~ ...

  3. python数据类型之字典(dict)和其常用方法

    字典的特征: key-value结构key必须可hash,且必须为不可变数据类型.必须唯一. # hash值都是数字,可以用类似于2分法(但比2分法厉害的多的方法)找.可存放任意多个值.可修改.可以不 ...

  4. 【HIHOCODER 1182】欧拉路·三

    描述 小Hi和小Ho破解了一道又一道难题,终于来到了最后一关.只要打开眼前的宝箱就可以通关这个游戏了. 宝箱被一种奇怪的机关锁住: 这个机关是一个圆环,一共有2^N个区域,每个区域都可以改变颜色,在黑 ...

  5. 《小团团团队》第八次团队作业:Alpha冲刺

    项目 内容 这个作业属于哪个课程 任课教师博客主页链接 这个作业的要求在哪里 实验十二 团队作业8:软件测试与Alpha冲刺 团队名称 小团团团队 作业学习目标 (1)掌握软件测试基础技术; (2)学 ...

  6. Django基于Pycharm开发之二 [使用django adminSite]

    在使用django自带的adminsite的时候,有以下内容需要做. 1.数据迁移,管理表的创建. 2.启用本地化 (setting.py的配置) 一.数据迁移,默认情况下,安装django之后,dj ...

  7. windows系统使用的误区

    1.软件不要装在c盘,影响系统运行速度. 软件c盘不会影响系统运行,会提高软件运行速度 PS:前提条件:C盘有足够的空余空间(50G以上). 大多数软件安装默认路径在C盘的原因是不知道电脑分区的情况, ...

  8. Selenium WebDriver-actionchain模拟鼠标右键操作

    #encoding=utf-8 import unittest import time from selenium import webdriver from selenium.webdriver i ...

  9. selenium - 弹出框操作

    # 6. 弹出框操作 # 6.1 页面弹出框操作# 页面弹出框 是一个html页面的元素,由用户在页面的操作触发弹出# (1)执行触发操作之后,等待弹出框出现之后,# (2)再定位弹出框中的元素并操作 ...

  10. [错误处理]UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 0: ordinal not in range(128)

    Stackoverflow 回答: 将byte类型转化:byte_string.decode('utf-8') Jinja2 is using Unicode internally which mea ...