惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

F
Full Disclosure
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
S
Secure Thoughts
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Security Latest
Security Latest
Project Zero
Project Zero
Apple Machine Learning Research
Apple Machine Learning Research
Cyberwarzone
Cyberwarzone
V
Visual Studio Blog
S
SegmentFault 最新的问题
月光博客
月光博客
Cisco Talos Blog
Cisco Talos Blog
Simon Willison's Weblog
Simon Willison's Weblog
NISL@THU
NISL@THU
Security Archives - TechRepublic
Security Archives - TechRepublic
Webroot Blog
Webroot Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
量子位
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
P
Privacy & Cybersecurity Law Blog
博客园 - 叶小钗
博客园 - 聂微东
O
OpenAI News
有赞技术团队
有赞技术团队
V2EX - 技术
V2EX - 技术
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
阮一峰的网络日志
阮一峰的网络日志
小众软件
小众软件
博客园 - 司徒正美
S
Security Affairs
J
Java Code Geeks
WordPress大学
WordPress大学
Schneier on Security
Schneier on Security
S
Security @ Cisco Blogs
Jina AI
Jina AI
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
GbyAI
GbyAI
M
MIT News - Artificial intelligence
T
Tailwind CSS Blog
腾讯CDC
Help Net Security
Help Net Security
Know Your Adversary
Know Your Adversary
N
News and Events Feed by Topic
T
Troy Hunt's Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
B
Blog
云风的 BLOG
云风的 BLOG
IT之家
IT之家
T
Threat Research - Cisco Blogs
罗磊的独立博客

博客园 - micenter

Register ASP.NET 4.0 An error has occurred: 0x8007b799 You must have administrative rights on this machine in order to ru 记录一些常用的SQLServer时间日期函数详解 IT民工的2013生活创想 SQL 日志太大,脚本清除 跟随博客园进入2012 .NET 中 操作excel 系列--copy功能. .NET 中 操作excel 系列--导入与导出. 设置VSS2005使支持通过Internet访问 中the server configuration settings apply only for local databases....问题解决 vss 2005 配置服务器端的时候提示"IIS没有安装" ASP.NET MVC 实现二级域名 [转] Eclipse快捷键大全(转载) Android单元测试测试[转] 手动使用EDM 生成器 (EdmGen.exe) 工具生成 SSDL,CSDL,MSL 文件。 InnoDB ,MyISAM 等存储引擎中主外键的大小设置. 在 mysql 中 定义 数据库,表,列时,设定的各个的编码格式。 asm.jar 等包的重用问题之解决方案 Hibernate中自动增长列的 在Annotations 中的配置和数据库设置默认值问题 - micenter java 字符串的编码与C#的区别 - micenter - 博客园 Hibernate中自动增长列的..hbm.xml 配置和数据库设置默认值问题 - micenter - 博客园
汇总 Hibernate 与 jdbc,jndi+dbcp, proxool ,c3p0 连接池的配置 - micenter
micenter · 2010-01-22 · via 博客园 - micenter

  最近在看有关Hibernate 数据库连接池的问题,确实数据连接池对应用程序的执行效率有很大的搞高,避免了频繁的数据库的连接工作。从GOOGLE中看到个各式各样的连接池的管理,大概总结了一下主要是以下几种。

一>,hibernate 自带的连接池,中要在Hibernate 配置文件 中加上 <property name="connection.pool_size">50</property>

即可,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"
>
<!-- 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  配置如下是:


<hibernate-configuration>
<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  添加如下内容


<?xml version="1.0" encoding="UTF-8"?>
<!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

   <hibernate-configuration>
<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 文件 ,内容如下:

代码

<?xml version="1.0" encoding="UTF-8"?>
<!-- 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>
   
<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 配置如下:

<?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"
><!-- 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>

 如此,这4种方式的连接池即如此,上面的配置已经测试过没有可以连接成功,不才在此班门弄斧,还不知道怎样测试这几种边连接池效率如何呢,如有路过的朋友知道还望指点一二,谢谢,欢迎大家拍砖。