zoukankan      html  css  js  c++  java
  • 数据库连接池

    数据库连接池

    概述:

    是一个容器,用来存放数据库连接;

    当系统初始化号以后,容器被创建,容器会申请一些连接对象,当用户访问数据库时,从容器中获取连接对象,访问完毕以后,将连接对象归还给容器。

    好处:节约资源和提高效率。

    实现

    1.标准接口:DataSource javax.sql包下;

    1.方法:

    获取连接:getConnection();

    归还连接:如果连接对象是从数据库连接池中获得的,那么调用Connection.close()方法,不 会关闭连接,而是归还给容器。

    2.一般我们不去实现它,由数据库厂家去实现

    1.C3P0:数据库连接池技术

    2.Druid:数据库连接池实现技术,有阿里巴巴提供

    C3P0

    使用步骤

    1.导入jar包 c3p0-0.9.5.2.jar 和 mchange-commons-java-0.2.12.jar 以及数据库驱动jar包;

    2.定义配置文件:

    名称:c3p0.properties 或者 c3p0-config.xml文件;

    路径:放置项目下的src路径下即可。

    3.创建核心对象 数据库连接池对象ComboPooledDataSource;

    4.获取连接:getConnection()

    Druid

    使用步骤

    1.导入jar包druid-1.0.9.jar;

    2.定义配置文件:1.是properties形式的;2.可以为任意名称和任意路径;

    3.加载配置文件 Properties;

    4.获取数据库连接池对象:DruidDataSourceFactory;

    5.获取连接对象 getConnection()。

    定义Druid工具类

    public class DruidUtils {
        private static DataSource ds = null;
    
        static {
            //加载配置文件
            Properties pro = new Properties();
            try {
                pro.load(DruidUtils.class.getClassLoader().getResourceAsStream("druid.properties"));
                //获取连接池对象
                ds= DruidDataSourceFactory.createDataSource(pro);
            } catch (IOException e) {
                e.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        public static Connection getConnection() throws SQLException {
            return ds.getConnection();
        }
    
        public static void close(Connection conn , Statement stmt , ResultSet res){
            close(conn);
            close(stmt);
            close(res);
        }
        public static void close(Connection conn , Statement stmt ){
           close(conn);
           close(stmt);
        }
        public static void close(Connection conn ){
            if(conn!=null){
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
        public static void close(Statement stmt ){
            if (stmt!=null){
                try {
                    stmt.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
        public static void close( ResultSet res){
            if(res!=null){
                try {
                    res.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    
        //获取连接池对象
        public static DataSource getDataSourse(){
            return ds;
        }
    }
  • 相关阅读:
    第七章习题G题
    第二周习题O题
    P4735 最大异或和
    P3008 [USACO11JAN]道路和飞机Roads and Planes
    P4009 汽车加油行驶问题
    P1073 最优贸易
    P2260 [清华集训2012]模积和
    P2865 [USACO06NOV]路障Roadblocks
    P1821 [USACO07FEB]银牛派对Silver Cow Party
    P4180 【模板】严格次小生成树[BJWC2010]
  • 原文地址:https://www.cnblogs.com/susexuexi011/p/14353755.html
Copyright © 2011-2022 走看看