DBCP连接池的使用
Posted 学习笔记
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DBCP连接池的使用相关的知识,希望对你有一定的参考价值。
通过连接池(数据源)优化我们的操作.
需求:
使用jdbc的时候,没操作一次都需要获取连接(创建)用完之后把连接释放掉了(销毁),通过连接池来优化curd操作.
技术分析:
连接池
连接池概述:
管理数据库的连接,
作用:
提高项目的性能.
就是在连接池初始化的时候存入一定数量的连接,用的时候通过方法获取,不用的时候归还连接即可.
所有的连接池必须实现一个接口 javax.sql.DataSource接口
获取连接方法:
Connection getConnection()
归还连接的方法就是以前的释放资源的方法.调用connection.close();
自定义一个连接池(理解思想)
常用连接池:
DBCP
C3P0
增前方法
1.继承
2.装饰者模式(静态代理)
3.动态代理
装饰者模式:★★★
使用步骤:
1.装饰者和被装饰者实现同一个接口或者继承同一个类
2.装饰者中要有被装饰者的引用
3.对需要增强的方法进行加强
4.对不需要加强的方法调用原来方法
常用的连接池:
DBCP:(理解)
apache组织
使用步骤:
1.导入jar包(commons-dbcp-1.4.jar和commons-pool-1.5.6.jar)
2.使用api
a.硬编码
//创建连接池
BasicDataSource ds = new BasicDataSource();
//配置信息
ds.setDriverClassName("com.mysql.jdbc.Driver");
ds.setUrl("jdbc:mysql:///day07");
ds.setUsername("root");
ds.setPassword("1234");
1 //DBCP代码演示: 2 public class DbcpDemo { 3 public static void main(String[] args) { 4 //通过dbcp连接池获取链接 5 BasicDataSource bDataSource = new BasicDataSource(); 6 //设置参数 7 bDataSource.setDriverClassName("com.mysql.jdbc.Driver"); 8 bDataSource.setUsername("root"); 9 bDataSource.setPassword("root"); 10 bDataSource.setUrl("jdbc:mysql://localhost:3306/test"); 11 Connection conn=null; 12 try { 13 //获取链接池中的链接 14 conn = bDataSource.getConnection(); 15 System.out.println(conn); 16 } catch (SQLException e) { 17 e.printStackTrace(); 18 }finally { 19 if (conn!=null) { 20 try { 21 //虽然调用close方法,但是连接池通过装饰者模式,修改了close方法 22 //实际的功能是释放链接回连接池中 23 conn.close(); 24 } catch (SQLException e) { 25 e.printStackTrace(); 26 } 27 } 28 } 29 } 30 } 31 //输出结果: 32 jdbc:mysql://localhost:3306/test, [email protected], MySQL Connector Java
b.配置文件
实现编写一个properties文件
//存放配置文件
Properties prop = new Properties();
prop.load(new FileInputStream("src/dbcp.properties"));
//设置
//prop.setProperty("driverClassName", "com.mysql.jdbc.Driver");
//创建连接池
DataSource ds = new BasicDataSourceFactory().createDataSource(prop);
1 //DBCP通过配置文件代码演示: 2 //配置文件: 3 driverClassName=com.mysql.jdbc.Driver 4 username=root 5 password=root 6 url=jdbc:mysql://localhost:3306/tes
1 //演示代码: 2 import java.io.FileInputStream; 3 import java.io.FileNotFoundException; 4 import java.io.IOException; 5 import java.sql.Connection; 6 import java.sql.SQLException; 7 import java.util.Properties; 8 9 import javax.sql.DataSource; 10 11 import org.apache.commons.dbcp.BasicDataSourceFactory; 12 /** 13 * 通过配置文件使用连接池 14 * @author zxy 15 * 16 */ 17 public class Demo { 18 public static void main(String[] args) { 19 //创建properties对象 20 Properties prop = new Properties(); 21 Connection conn=null; 22 try { 23 //加载配置文件,传入输入流 24 prop.load(new FileInputStream("src/dbcp.properties")); 25 //获取链接 26 DataSource bs = BasicDataSourceFactory.createDataSource(prop); 27 conn = bs.getConnection(); 28 //测试输出 29 System.out.println(conn); 30 } catch (FileNotFoundException e) { 31 e.printStackTrace(); 32 } catch (IOException e) { 33 e.printStackTrace(); 34 } catch (Exception e) { 35 e.printStackTrace(); 36 }finally { 37 //关闭链接 38 if (conn!=null) { 39 try { 40 conn.close(); 41 } catch (SQLException e) { 42 e.printStackTrace(); 43 } 44 } 45 } 46 } 47 }
以上是关于DBCP连接池的使用的主要内容,如果未能解决你的问题,请参考以下文章