Java中三种流行的数据连接池
来源:互联网 发布:linux 禁止复制文件 编辑:程序博客网 时间:2024/05/21 10:21
在使用数据连接池之前,首先我们要知道使用连接池是什么?连接池就是创建和管理一个连接的缓冲池技术,这些连接随时会被需要他们的线程调用。那我们使用数据连接池有什么好处呢?在我们连接数据库的时候如果不使用数据连接池,每一次访问数据库都去创建一个连接,这样会很消耗时间和项目的性能。
下面我们开始说一下Java中三种流行的数据库连接池:
(1)C3P0连接池:C3P0官网(为什么把它放在第一位呢,我想大家对它应该是最熟悉的了,上学或者培训的时候老师都讲过。)
C3P0是一个开源数据连接池,Hibernate3.0默认自带的数据连接池,性能比较稳定。
C3P0配置(以MySQL为例):
st1:下载c3p0-0.9.1.2.jar
st2:在项目源路径下创建XXX.properties
数据库连接实例:
jdbc.driverClass=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql:///testjdbc.user=rootjdbc.pwd=rootc3p0.minPoolSize=2c3p0.maxPoolSize=10
st3:创建java类,获取连接。
/** * */package com.test.dbUtilimport java.beans.PropertyVetoException;import java.io.IOException;import java.io.InputStream;import java.util.Properties;import com.mchange.v2.c3p0.ComboPooledDataSource;/** * @author DuZhuo * 数据库工具类 */public class DBUtil {private static DBUtil dbutil;private static Properties p;static{InputStream is=Thread.currentThread().getContextClassLoader().getResourceAsStream("xxx.properties");p=new Properties();try {p.load(is);} catch (IOException e) {e.printStackTrace();}}private DBUtil(){}public static DBUtil getDBUtil(){if(dbutil==null){dbutil=new DBUtil();}return dbutil;} /** * 根据条件获取连接池 * @param datasourcename * @return */public static ComboPooledDataSource getComboPooledDataSource(String datasourcename){//创建一个连接池对象ComboPooledDataSource cpds=new ComboPooledDataSource();try {cpds.setDriverClass(p.getProperty(datasourcename+".JDBCDriver"));} catch (PropertyVetoException e) {// TODO Auto-generated catch blocke.printStackTrace();}cpds.setJdbcUrl(p.getProperty(datasourcename+".url"));cpds.setUser(p.getProperty(datasourcename+".UserId"));cpds.setPassword(p.getProperty(datasourcename+".password"));cpds.setInitialPoolSize(Integer.parseInt(p.getProperty(datasourcename+".initConns")));cpds.setMaxPoolSize(Integer.parseInt(p.getProperty(datasourcename+".maxConns")));return cpds;} }
在SSH中spring.xml中配置C3P0
<context:property-placeholder location="classpath:jdbc.properties"/><bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"><property name="driverClass" value="${jdbc.driverClass}"/><property name="jdbcUrl" value="${jdbc.url}"/><property name="user" value="${jdbc.user}"/><property name="password" value="${jdbc.pwd}"/><property name="minPoolSize" value="${c3p0.minPoolSize}"/><property name="maxPoolSize" value="${c3p0.maxPoolSize}"/></bean>
在SSH中hibernate.cfg.xml(该配置不使用properties文件)
<!-- 1. 配置数据库方言 --><property name="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property><!-- 2. 数据库连接参数 --><property name="connection.driver_class">com.mysql.jdbc.Driver</property><property name="connection.url">jdbc:mysql://localhost:3306/lianxi</property><property name="connection.username">root</property><property name="connection.password">201314</property><!-- 3. 配置c3p0连接池 --><property name="connection.provider_class">org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider</property><!-- 设置c3p0的优化参数 --><property name="c3p0.min_size">5</property><property name="c3p0.max_size">30</property><property name="c3p0.timeout">1800</property><property name="c3p0.max_statements">50</property>
(2)DBCP连接池:DBCP官网
DBCP是Apache下面专门为java提供的数据连接池,也是Tomcat数据连接的组件。(注:由于bug太多,Hibernate已经不再支持。)
DBCP配置(以MySQL为例):
st1:导入common-dbcp.jar、common-pool.jar、common-collections.jar
st2:在项目源路径下创建XXX.properties
数据库连接实例:
jdbc.driverClass=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql:///testjdbc.user=rootjdbc.pwd=root
st3:java类中调用
public static DataSource getDataSource(){//创建一个连接池对象DataSource ds=null;BasicDataSource bds=new BasicDataSource();try {ds.setDriverClass(p.getProperty("jdbc.driverClass"));} catch (PropertyVetoException e) {// TODO Auto-generated catch blocke.printStackTrace();}bds.setJdbcUrl(p.getProperty("jdbc.url"));bds.setUser(p.getProperty("jdbc.user"));bds.setPassword(p.getProperty("jdbc.pwd"));ds=bds;return ds;}SSH框架Spring中调用
<bean id="dataSource" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="${jdbc.driverClass}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.user}"/> <property name="password" value="${jdbc.pwd}"/> </bean>
(3)Proxool连接池:Proxool官网
Proxool是sourceforge下面的一个开源数据连接池,最大的特色便是Proxool提供了监视的功能,便于发现连接泄漏的情况。
Proxool配置(以Oracle为例):
st1:导入proxool-0.9.0RC3.jar
str2:项目源目录下创建proxool.xml
<?xml version="1.0" encoding="utf-8"?> <something-else-entirely> <proxool> <alias>test</alias> <driver-url>jdbc:oracle:thin:@127.0.0.1:1521:test</driver-url> <driver-class>oracle.jdbc.driver.OracleDriver</driver-class> <driver-properties> <property name="user" value="test"/> <property name="password" value="test"/> </driver-properties> <house-keeping-sleep-time>90000</house-keeping-sleep-time> <prototype-count>10</prototype-count> <maximum-connection-count>100</maximum-connection-count> <minimum-connection-count>20</minimum-connection-count> <maximum-active-time>900000</maximum-active-time> </proxool> </something-else-entirely>
st3:在web.xml中初始化proxool
<!--proxool--> <servlet> <servlet-name>proxoolServletConfigurator</servlet-name> <servlet-class>org.logicalcobwebs.proxool.configuration.ServletConfigurator</servlet-class> <init-param> <param-name>xmlFile</param-name> <param-value>/WEB-INF/classes/proxool.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>proxoolServletConfigurator</servlet-name> <!-- 访问http://localhost:8080/项目名称/proxool即可看到页面 --> <url-pattern>/proxool</url-pattern> </servlet-mapping>
st4:创建连接
Connection conn = null; try { Class.forName("org.logicalcobwebs.proxool.ProxoolDriver"); conn = DriverManager.getConnection("proxool.test"); //使用proxool连接池 }
在SSH中Hibernate的配置
<hibernate-configuration> <session-factory> <property name="hibernate.proxool.pool_alias">test</property><property name="hibernate.proxool.xml">proxool.xml</property><property name="hibernate.connection.provider_class">org.hibernate.connection.ProxoolConnectionProvider</property><property name="hibernate.proxool.existing_pool">true</property><property name="dialect">oracle.jdbc.driver.OracleDriver</property><property name="hibernate.cache.use_query_cache">true</property> </session-factory> </hibernate-configuration>
在SSH中Spring的配置
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName"> <value>org.logicalcobwebs.proxool.ProxoolDriver</value> </property> <property name="url"> <value>proxool.test</value> </property></bean>
0 0
- Java中三种流行的数据连接池
- Java中三种流行的数据连接池
- 四个流行的Java连接池
- 四个流行的Java连接池
- 四个流行的Java连接池
- 四个流行的Java连接池
- 四大流行的java连接池之BoneCP篇
- 四个流行的java连接池之DBCP篇
- 四个流行的Java连接池之Proxool篇
- 四个流行的java连接池之DBCP篇
- 连接池含义、作用和工作过程(四个流行的Java连接池)
- 三种流行的连接池配置
- C3P0、BoneCP、DBCP、Proxool四个时下流行的Java连接池之间的比较
- JAVA流行的结果
- JAVA流行的结果
- java流行的框架
- 四大流行的jdbc连接池之C3P0篇
- java数据连接池的并发探讨
- wpa_supplicant 初始化流程分析
- Android中this、super的区别
- PPT显示页码
- android FFMpeg 中加入混淆(Proguard ) JavaCPP 报错
- Observability at Twitter
- Java中三种流行的数据连接池
- 今天简要介绍继承,多态和数组
- 牛新庄的DB2之路
- [NodeJS]使用Node.js写一个简单的在线聊天室
- registerReceiver和unregisterReceiver的调用者必须一致
- 什么是MDI窗体?
- 曝广州星班客餐饮管理服务有限公司—晶锅英雄水晶锅加盟受骗记录
- Javamail 发送附件中文名过长以及乱码问题
- ubuntu下通过SSH+autoproxy+firefox无法上网 情况处理