数据库连接池-DBCP (Apache Database Connection pool)
2014-01-03 16:11
435 查看
第三方数据库连接池包
DBCP - Apache – DataBase Connection Pool 1.1C3p0 – 0.9 –
Proxool -
第一步:导入dbcp包
第二步:通过核心类连接数据
BasicDataSource它是javax.sql.DataSrouce的子类。一个工具类:BasicDataSourceFactory。
@Test public void testpool1() throws Exception { BasicDataSource ds = new BasicDataSource(); // 设置driver ds.setDriverClassName("com.mysql.jdbc.Driver"); // 设置url ds.setUrl("jdbc:mysql:///db909?characterEncoding=UTf8"); ds.setPassword(""); ds.setUsername("root"); ds.setMaxActive(5);// 设置最多有几个连接 ds.setInitialSize(2);// 设置在开始时创建几个连接 // ..................下面几乎不需要调用 ds.setDefaultAutoCommit(true);// 设置所有连接是否自动提交 ds.setMaxIdle(3000);// 设置每个连接最大的空闲时间 Connection c1 = ds.getConnection(); Connection c2 = ds.getConnection(); Connection c3 = ds.getConnection(); Connection c4 = ds.getConnection(); Connection c5 = ds.getConnection(); System.err.println("c1:" + c1.hashCode() + "," + c1.getClass());// com.mysql.jdbc.Jdbc4Connection@11111, System.err.println("c2:" + c2.hashCode());// cn.itcast.MyDataSource$MyConn@11111 System.err.println("c3:" + c3.hashCode()); System.err.println("c4:" + c4.hashCode()); System.err.println("c5:" + c5.hashCode()); c2.close(); Connection c6 = ds.getConnection(); System.err.println("c6:" + c6.hashCode()); }
第三步:创建一个资源文件
在dbcp中一个类专门用于读取资源文件的:BasicDataSourceFactory
/** * 通过配置文件创建连接 */ @Test public void testPool2() throws Exception { Properties p = new Properties(); p.load(DbcpPool.class.getResourceAsStream("jdbc.properties")); DataSource ds = new BasicDataSourceFactory().createDataSource(p); Connection c1 = ds.getConnection(); Connection c2 = ds.getConnection(); Connection c3 = ds.getConnection(); System.err.println(c1.hashCode() + "," + c1.getClass()); System.err.println("c2:" + c2.hashCode()); System.err.println("c3:" + c3.hashCode()); c3.close(); Connection c4 = ds.getConnection(); System.err.println("c4:" + c4.hashCode()); }
jdbc.properties文件与类在一个包里
以下所有属性,都来自于BaiscDataSource的setXxxx
#以下所有属性,都来自于BaiscDataSource的setXxxx driverClassName=com.mysql.jdbc.Driver url=jdbc:mysql:///db909?useUnicode=true&characterEncoding=UTF8&useOldAliasMetadataBehavior=true username=root password= maxActive=3
三使用连接池
在一个项目中,就只能拥有一个DataSource的实例。在这个dataqSource3中有多个Connectioin。声明一个工厂类,创建维护唯一的一个DataSource
public class DataSourceUtils { private DataSourceUtils(){} private static DataSource ds; static{ try{ Properties p = new Properties(); p.load(DataSourceUtils.class.getClassLoader().getResourceAsStream("jdbc.properties")); ds = new BasicDataSourceFactory().createDataSource(p); }catch(Exception e){} } //返回一个唯一的连接 public static Connection getCon(){ Connection con = null; try { con = ds.getConnection(); } catch (SQLException e) { e.printStackTrace(); } return con; } //提供一个方法返回DataSource public static DataSource getDs(){ return ds; } }
@Test public void query1(){ Connection con1 = DataSourceUtils.getCon(); Connection con2 = DataSourceUtils.getCon(); System.err.println(con1==con2);//faslse DataSource ds1 = DataSourceUtils.getDs(); DataSource ds2 = DataSourceUtils.getDs(); System.err.println(ds1==ds2);//true }
相关文章推荐
- Ubuntu下安装和配置Apache2
- 了解 GNU GPL/GNU LGPL/BSD/MIT/Apache协议
- 移植cgic至apache实现文件上传
- [SIR数据集实验][1]apache-xml-security实验方法
- 【Apache Storm系列之二】Storm-0.9.0.1版本安装部署
- java.lang.NoSuchMethodException: org.apache.catalina.deploy.WebXml addServlet
- Windows下面 Apache配置虚拟主机
- Apache优化
- Apache优化
- Mac OS X 10.9下搭建java web开发环境之一 开启和配置本机的Apache服务
- Apache Commons-logging使用实例
- php+mysql+apache的安装和配置
- 配置本地环境之虚拟主机配置
- apache虚拟主机设置泛域名的方法
- 2008R2 无法安装 HDP Apache 系列服务解决方案
- hadoop异常:org.apache.hadoop.ipc.Client: Retrying connect to server: 0.0.0.0/0.0.0.0:8031
- Apache学习笔记之基础配置篇
- ubuntu 10.04 apt 安装apache2 php
- Apache虚拟主机的配置
- apache2.4服务器个人主页的设置