数据库连接池

数据库连接池

JDBC连接是连接数据库常用的方式,但是连接只有当需要的时候才创建,因此每次创建连接都需要耗费比较多的时间,会导致效率低下
数据库连接池的原理是在一个连接池中创建多条连接,当需要时就把连接拿出来使用,等到使用结束之后又把这条连接返回到线程池,这样就实现了资源的重新利用,并且不用等到需要的时候才去创建连接,提高了效率

连接池主要有两种数据源
  • DBCP数据源
  • C3P0数据源
    注释:
  • 数据源和数据库连接不同,数据源无需创建多个,它是产生数据库连接的工厂(工厂设计模式),因此整个应用只需要一个数据源即可
  • 只需创建一个数据源,体现了单例设计模式的思想

C3P0数据源

C3P0连接池的优点:不仅可以自动清理不再使用的Connection,还可以自动清理Statement和ResultSet

使用C3P0连接池的步骤:
  • 下载C3P0-0.9.1.2.jar 包,将它导入到所在的工程当中 ,注意要放在src目录下
    这里写图片描述

  • 其次要搭配好关于自己数据库的一些信息

    public final class connectPool{
        private static connectPool instance ;
        private static ComboPooledDataSource dataSource;

        //把构造方法设为私有不可见
        private connectPool(){
            dataSource = new ComboPooledDataSource();
            dataSource.setUser("root");  //设置用户名  
            dataSource.setPassword("xxxx");  //设置密码  
            dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/qg");//设置连接的url
            dataSource.setDriverClass("com.mysql.jdbc.Driver");
            dataSource.setMinPoolSize(1);//设置最小连接数为1
            dataSource.setMaxPoolSize(50);//设置最大连接数为50 
            dataSource.setMaxStatement(50);  //设置最长等待时间  
        }
    }

    //确保只是建立一个连接池,不会浪费资源
    public static final connectPool getInstance(){
        if(instance == null){
            //加入连接池还没创建,则新建一个连接池
            instance = new connectPool();
            //内部的构造方法
            }
            return instance;
        }
    }

    //建立连接  
    public sychrnoized final Connection getConnection(){
        Connection conn = null;
        conn = dataSource.getConnection();
    }
  • 除此之外还可以通过配置xml文件来设置数据库的链接,就不需要最前面的代码
    特别注意
    <c3p0-config>
    <!-- 注意这里的命名要和和之后建立连接的名称一致-->
    <named-config name="mysql">
        <property name ="driverClass">com.mysql.jdbc.Driver</property>  
        <!--具体到你要连接的表名-->
        <<property name ="jdbcUril">jdbc:mysql://localhost:3306/qg</property>  
        <property name ="user">root</property>
        <property name ="password">xxxxxx</property>
        <property name ="initialPoolSize">10</property>
        <property name ="maxIdleTime">30</property>
        <property name ="minPoolSize">10</property>
        <property name ="MaxPoolSize">100</property>
        <property name ="maxStatements">150</property>
    </named-config>
</c3p0-config>

之后再使用时要注明好链接的名称

    public static void main(String[] args){
        ComboPooledDataSource ds = new ComboPooledDataSource("mysql");
        //......
    }

注释:连接池的增删查改和JDBC连接基本类似,通过select、update、delete和insert等关键字来进行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值