zoukankan      html  css  js  c++  java
  • 数据库连接池(c3p0与druid)

    1.数据库连接池概念

    其实就是一个容器(集合),存放数据库连接的容器。当系统初始化好后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时,从容器中获取连接对象,用户访问完之后,会将连接对象归还给容器。可以节约资源,用户访问也能高效一点。

    2.实现数据库连接池

    要创建数据库连接池要实现 java.sql包下的 DataSource 接口。此接口有一个方法 getConnection() 可以获得数据库连接对象。

    一般这个接口不由我们去实现,有数据库厂商来实现:

    常见有 C3P0 和 druid 。

    其中druid是由阿里巴巴提供的。

    3.C3P0数据库连接池技术

    (1)导入jar包 (两个) c3p0-0.9.5.2.jar mchange-commons-java-0.2.12.jar。当然还有jdbc的包

    (2)定义配置文件

    名称: c3p0.properties 或者 c3p0-config.xml(固定的,不能变)
    路径:直接将文件放在src目录下。(固定,不能变)

    配置文件样本:

    <c3p0-config>
      <!-- 使用默认的配置读取连接池对象 -->
      <default-config>
          <!--  连接参数 -->
        <property name="driverClass">com.mysql.cj.jdbc.Driver</property>
        <property name="jdbcUrl">jdbc:mysql://localhost:3306/database</property>
        <property name="user">root</property>
        <property name="password">xxx</property>
        
        <!-- 连接池参数 -->
        <property name="initialPoolSize">5</property>
        <property name="maxPoolSize">10</property>
        <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/database</property>
        <property name="user">root</property>
        <property name="password">xxx</property>
        
        <!-- 连接池参数 -->
        <property name="initialPoolSize">5</property>
        <property name="maxPoolSize">8</property>
        <property name="checkoutTimeout">1000</property>
      </named-config>
    </c3p0-config>

    (3)创建数据库连接池对象 ComboPooledDataSource

    (4)获取连接: getConnection

    示例:

    public class Demo1 {
        public static void main(String[] args) throws SQLException {
            ComboPooledDataSource cpd = new ComboPooledDataSource();  // 另一个构造方法可以加参数,表示用配置文件的<named-config></named-config>里面的配置
            Connection connection = cpd.getConnection();
            System.out.println(connection);
        }
    }

    4.Druid数据库连接技术

    (1)导入jar包 druid-1.0.9.jar

    (2)定义配置文件:是properties形式的,可以叫任意名称,可以放在任意目录下

    (3)加载配置文件。Properties

    (4)获取数据库连接池对象:通过工厂来来获取  DruidDataSourceFactory

    (5)获取连接:getConnection

    示例:

    配置文件:

    driverClassName=com.mysql.cj.jdbc.Driver
    url=jdbc:mysql://127.0.0.1:3306/test
    username=root
    password=xxx
    initialSize=5
    maxActive=10
    maxWait=3000

    代码:

    public class Demo2 {
        public static void main(String[] args) throws Exception {
            // 加载配置文件
            Properties properties = new Properties();
            InputStream is = Demo2.class.getClassLoader().getResourceAsStream("druid.properties");
            properties.load(is);
    
            //获取连接池对象
            DataSource ds = DruidDataSourceFactory.createDataSource(properties);
    
            // 获取连接
            Connection connection = ds.getConnection();
    
            System.out.println(connection);
        }
    }
  • 相关阅读:
    WebService的使用
    Nginx的安装与部署
    Linux下安装mysql5.7
    SpringBoot之旅 -- 定时任务两种(Spring Schedule 与 Quartz 整合 )实现
    ELK 日志分析系统
    解决SpringBoot jar包太大的问题
    IntelliJ Idea 授权服务器使用
    Mybatis Generator最完整配置详解
    PyCharm2016.2专业版注册码
    HttpClient实现HTTP文件通用下载类
  • 原文地址:https://www.cnblogs.com/chichung/p/10316985.html
Copyright © 2011-2022 走看看