• commons-dbcp连接池的使用


    数据库连接池
        
        池参数(所有池参数都有默认值):
        初始大小:10
        最小空闲连接数:3
        增量:一次创建的最小单位(5个)
        最大空闲连接数:12个
        最大连接数:20个
        最大的等待时间:1000毫秒
        
        四大连接参数:
        连接池也是使用4大连接参数来完成连接的创建连接对象
        
        实现的接口:
        连接池必须实现:javax.sql.DataSource接口
        
        连接池返回的Connection对象,它的close方法与众不同,调用它的close不是关闭而是将连接归还给池

    需要jar:

      

    package cn.itcast.jdbc;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.sql.Connection;
    import java.sql.SQLException;
    
    import org.apache.commons.dbcp.BasicDataSource;
    import org.junit.Test;
    
    /**
     * DBCP连接池
     * @author Administrator
     *
     */
    /*
          接口 DataSource
          DataSource 接口由驱动程序供应商实现。共有三种类型的实现: 
        基本实现 - 生成标准的 Connection 对象 
        连接池实现 - 生成自动参与连接池的 Connection 对象。此实现与中间层连接池管理器一起使用。 
        分布式事务实现 - 生成一个 Connection 对象,该对象可用于分布式事务,大多数情况下总是参与连接池。此实现与中间层事务管理器一起使用,大多数情况下总是与连接池管理器一起使用。 
         Connection getConnection() 
                  尝试建立与此 DataSource 对象所表示的数据源的连接。 
         Connection getConnection(String username, String password) 
                  尝试建立与此 DataSource 对象所表示的数据源的连接。 
    
     */
    public class Demo1 {
        
        @Test
        public void fun1() throws SQLException{
            /*
             * 1、创建连接池对象
             * 2、配置4大参数
             * 3、配置池参数
             * 4、得到连接对象
             */
            
            BasicDataSource dataSource=new BasicDataSource();
            dataSource.setDriverClassName("com.mysql.jdbc.Driver");
            dataSource.setUrl("jdbc:mysql://127.0.0.1:3306/demo");
            dataSource.setUsername("guodaxia");
            dataSource.setPassword("961012gz");
            
            dataSource.setMaxActive(20);
            dataSource.setMinIdle(3);
            dataSource.setMaxWait(1000);
            
            Connection con=dataSource.getConnection();
            Connection con1=new MyConnection(con);
            System.out.println(con1.getClass().getName());
            //org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper 装饰者模式
            
            /**
             * 连接池内部使用四大参数创建了连接对象,即mysql驱动提供的Connection
             * 连接池使用mysql的连接对象进行了装饰,只对close方法进行了增强
             * 装饰之后的Connection的close方法用来把当前连接归还给池
             */
            con1.close();//把连接归还给池
        }
    }
  • 相关阅读:
    高性能队列设计
    线上 RTT 有 1/3 概率超过 3 秒,我用 arthas 查出元凶!
    你管这破玩意儿叫 token
    高可用与Zookeeper设计原理
    从应用层到网络层排查 Dubbo 接口超时全记录
    我是如何晋升专家岗的
    百亿数据,毫秒级返回,如何设计?--浅谈实时索引构建之道
    微信的原创保护机制到底是如何实现的
    AOP面试造火箭始末
    与一位转行做滴滴司机的前程序员对话引发的思考
  • 原文地址:https://www.cnblogs.com/aigeileshei/p/5714047.html
Copyright © 2020-2023  润新知