zoukankan      html  css  js  c++  java
  • 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, UserName=root@localhost, 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 }
     
  • 相关阅读:
    PTA 1022 Digital Library (30分) 坑多需谨慎!!!
    PAT 1013 Battle Over Cities (25分) 图的连通分量+DFS
    PAT 1021 Deepest Root (25分) 从测试点3超时到满分再到代码优化
    Java面向对象-------多态总结
    C后端设计开发
    C后端设计开发
    C后端设计开发
    C后端设计开发
    C后端设计开发
    一个真正的客户端非阻塞的 connect
  • 原文地址:https://www.cnblogs.com/anzhi/p/7465178.html
Copyright © 2011-2022 走看看