数据库连接池

作者: 幻影翔 | 来源:发表于2018-05-28 17:20 被阅读13次

    连接池的意义

    • 作用:连接池是将已经创建好的连接保存在池中,当有请求来时,直接使用已经创建好的连接对数据库进行访问。这样省略了创建连接和销毁连接的过程。这样性能上得到了提高。
    • 连接池放了N个Connection对象,本质上放在内存当中,在内存中划出一块缓存对象,应用程序每次从池里获得Connection对象,而不是直接从数据里获得,这样不占用服务器的内存资源。

    两种优秀的连接池技术

    • 都要实现接口DataSource接口
    • C3P0
    • DPCP

    jar包

    DPCP

    • commons-dbcp-1.4.jar
    • commons-pool-1.5.6.jar

    C3P0

    • c3p0-0.9.1.2.jar

    DPCP

    //硬编码的方式实现
    @Test
    public void testDPCP() throws SQLException {
        //获取DPCP核心类
        BasicDataSource dataSource = new BasicDataSource();
        //设置连接池
        dataSource.setInitialSize(3);   //初始化连接数
        dataSource.setMaxActive(6);     //最大连接数
        dataSource.setMaxIdle(300);     //最大空闲时间
        //设置连接的参数  连接字段,驱动,连接用户,密码
          String basename="root";
          String password ="root";
          String url = "jdbc:mysql:///JavaWeb?useUnicode=true&characterEncoding=utf8";
    
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl(url);
        dataSource.setUsername(basename);
        dataSource.setPassword(password);
        //获取连接
        Connection conn = dataSource.getConnection();
        conn.prepareStatement("delete from admin where id = 3").executeUpdate();
        //关闭流
        conn.close();
    
    }
    
    //加载配置文件创建
    @Test
    public void testDPCP2() throws Exception {
        Properties prop = new Properties();
        //加载文件输入流
       InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("db.properties");
       //加载配置文件
        prop.load(inputStream);
        //创建DataSource
        DataSource dataSource = BasicDataSourceFactory.createDataSource(prop);
    
        //创建连接
        Connection conn = dataSource.getConnection();
        conn.prepareStatement("update  admin set userName='tom' where id = 6").executeUpdate();
    
        //关闭流
        conn.close();
    }
    

    C3P0

    //加载配置文件
    @Test
    public void C3P0Xml() throws SQLException {
        //加载核心工具类
        ComboPooledDataSource dataSource = new ComboPooledDataSource("myApp");
        //创建连接
        Connection conn = dataSource.getConnection();
        PreparedStatement pstmt=null;
        for(int i=1;i<11;i++){
            String sql = "insert into admin(userName,pwd) values (?,?)";
            pstmt = conn.prepareStatement(sql);
            pstmt.setString(1,"jack"+i);
            pstmt.setString(2,"jack006");
            pstmt.executeUpdate();
        }
        //关闭流
        pstmt.close();
        conn.close();
    }
    
    c3p0的配置文件

    相关文章

      网友评论

        本文标题:数据库连接池

        本文链接:https://www.haomeiwen.com/subject/wsigjftx.html