展开全部
在讲解连接池之前,先弄懂以下几个概念:
数据源:Data source , 读取数据的来源,也就是说你的系统要读取的数据去什么地方找636f70793231313335323631343130323136353331333361326330(存放数据的地方)!
JDBC:全称为Java DataBase Connectivity standard, 它是一个面向对象的应用程序接口(API), 通过它可访问各类关系数据库。
两者之间的关系: 数据源并不等于连接池,数据源不是必须要求实现连接池的,即连接池是数据源的一种.
c3p0: hibernate.cfg.xml中配置
com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/application_context
true
UTF-8
root
paul
org.hibernate.connection.C3P0ConnectionProvider
20
5
120
100
120
2
……
dbcp: hibernate.cfg.xml中配置
100
1
60000
10
100
1
60000
10
proxool: hibernate.cfg.xml中配置 先写proxool的配置文件,文件名:proxool.xml(一般放在与hibernate.cfg.xml文件在同一个目录中) <?xml version="1.0" encoding="UTF-8"?>
DBPool
jdbc:mysql://localhost:3306/application_context?useUnicode=true&characterEncoding=UTF8
com.mysql.jdbc.Driver
90000
20
5
100
10
配置hibernate.cfg.xml文件 <?xml version='1.0' encoding='UTF-8'?>
org.hibernate.connection.ProxoolConnectionProvider
DBPool
proxoolconf.xml
.JNDI: hibernate.cfg.xml中配置JNDI连接池,数据源已经由应用服务配置好(如Web服务器),Hibernate需要做的只是通过JNDI名查找到此数据源。应用服务器将连接池对外显示为JNDI绑定数据源,它是javax.jdbc.Datasource类的一个实例。只要配置一个Hibernate文件,如: hibernate.connection.datasource=java:/comp/env/jdbc/JNDI_NAME //JNDI名
hibernate.transaction.factory_class = org.hibernate.transaction.JTATransactionFactory
hibernate.transaction.manager_loopup_class=org.hibernate.transaction.JBossTransactionManagerLookup
hibernate.dialect=org.hibernate.dialect.MySQLDialect
区别:在hibernate3.0中,已经不再支持dbcp了,hibernate的作者在hibernate.org中,明确指出在实践中发现 dbcp有BUG,在某些种情会产生很多空连接不能释放,所以抛弃了对dbcp的支持。proxool不少行家推荐使用.c3p0占用资源比较大,效率也不高.
本回答被网友采纳
已赞过
已踩过<
你对这个回答的评价是?
评论
收起