数据库连接池 ---C3P0和Druid连接池技术

数据库连接池

什么时数据库连接池?他是来干什么的?有什么作用?

​ 当我们通过JDBC连接数据库时,每连接一次就会向计算机底层申请一次资源,最后还得释放资源,这个操作非常耗时,会造成用户体验不佳。因此,数据库连接池诞生了,数据库连接池可以理解成一个池子,容器,也就是一个集合,用来存放数据库连接的集合;

​ 当系统初始化好后,容器会被创建,容器中会申请一些连接对象,当用户访问数据库时,从容器中获取连接对象,不用向底层申请资源,用户访问完后,会将连接对象归还给容器。从而节约资源,高效。

方法:

​ 获取连接:getConnection()
归还连接:如果连接对象Connection是从连接池中获取的,那么调用Connection.close()方法,则不是关闭连接了,而是归还连接到连接池中。

数据库连接池技术(这里介绍两个 C3P0和Druid)
C3P0使用

1.导入jar包:需要导入三个包(c3p0-0.9.5.2.jar,mchange-commons-java-0.2.12.jar,mysql-jdbc.jar)

​ c3p0-0.9.5.2.jar包:https://pan.baidu.com/s/1TbK8Jz9iRbQCHxEq3HygwQ 提取码:2loa

​ mchange-commons-java-0.2.12.jar包:https://pan.baidu.com/s/1HIsDa8_jvTC9A9N85Ss4_Q 提取码:xg3j

​ (mysql-jdbc.jar包:https://pan.baidu.com/s/1jcqHphjcm3OZZOOo21hsXA 提取码:zxnq

2.定义配置文件:

​ 名称:c3p0.properties或者c3p0-config.xml(必须这两个名字之一,因为会自动加载文件)

​ 配置文件写法如下链接:

链接:https://pan.baidu.com/s/10EFK9sv_p9Kr3yuT3FNJcA
提取码:prr9

​ 路径:src目录下

3.创建核心对象,即数据库连接池对象 CombopooledDataSource

4.获取连接:getConnection

C3P0案例演示:

主方法:

public static void main(String[] args) throws SQLException {
        //创建数据库连接池对象,不传参数,使用配置文件中<default-config>中的默认配置,
        // 如果传入name的值,则使用配置文件中对应name的配置
        DataSource ds=new ComboPooledDataSource();
        //获取连接对象
        Connection conn =ds.getConnection();


        //归还连接
        conn.close();
    }

src文件下的配置文件:

<c3p0-config>
  <!-- 使用默认的配置读取连接池对象 -->
  <default-config>
  	<!--  连接参数 -->
    <property name="driverClass">com.mysql.jdbc.Driver</property>
    <property name="jdbcUrl">jdbc:mysql://localhost:3306/db2</property>
    <property name="user">root</property>
    <property name="password">root</property>

    <!-- 连接池参数 -->
    <!--初始化申请的连接数量-->
    <property name="initialPoolSize">5</property>
    <!--最大的的连接数量-->
    <property name="maxPoolSize">10</property>
    <!--超时时间 ms-->
    <property name="checkoutTimeout">3000</property>
  </default-config>

  <named-config name="otherc3p0">
    <!--  连接参数 -->
    <property name="driverClass">com.mysql.jdbc.Driver</property>
    <property name="jdbcUrl">jdbc:mysql://localhost:3306/day25</property>
    <property name="user">root</property>
    <property name="password">root</property>

    <!-- 连接池参数 -->
    <property name="initialPoolSize">5</property>
    <property name="maxPoolSize">8</property>
    <property name="checkoutTimeout">1000</property>
  </named-config>
</c3p0-config>
Druid的使用(由阿里巴巴提供,性能最好的连接池之一,推荐使用)

1.导入jar包:需要导入两个包(druid-1.0.9.jar,mysql-jdbc.jar)

​ druid-1.0.9.jar包:https://pan.baidu.com/s/18hOu2JRK32pGVbFRwEOO5g 提取码:3g0b

​ mysql-jdbc.jar包:https://pan.baidu.com/s/1jcqHphjcm3OZZOOo21hsXA 提取码:zxnq

2.定义配置文件:是properties形式的,可以任意名称,可以放在任意位置(手动加载文件)

​ 配置文件写法如下链接:

链接:https://pan.baidu.com/s/11UmMx1rKa59muaWxnUnv9g
提取码:xks4

3.加载配置文件

4.获取数据库连接池对象 通过工厂类来获取 DruidDataSourceFactory

5.获取连接:getConnection

Druid案例演示

主方法

public static void main(String[] args) throws Exception {
        //加载配置文件进内存
        Properties pro =new Properties();
        // 获取配置文件的路径(参数传配置文件名称)  类名.class
        InputStream is=DruidDemo.class.getClassLoader().getResourceAsStream("druid.properties");
        pro.load(is);
        //获取连接池对象
        DataSource ds=DruidDataSourceFactory.createDataSource(pro);
        //获取连接
        Connection conn = ds.getConnection();
        
        //归还连接
        conn.close();
    }

配置文件

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/db2
username=root
password=root
#初始化连接数量
initialSize=5
#最大连接数量
maxActive=10
#最大等待时间 ms
maxWait=3000
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值