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目录下。(固定,不能变)

配置文件样本:

  1. <c3p0-config>
  2. <!-- 使用默认的配置读取连接池对象 -->
  3. <default-config>
  4. <!-- 连接参数 -->
  5. <property name="driverClass">com.mysql.cj.jdbc.Driver</property>
  6. <property name="jdbcUrl">jdbc:mysql://localhost:3306/database</property>
  7. <property name="user">root</property>
  8. <property name="password">xxx</property>
  9.  
  10. <!-- 连接池参数 -->
  11. <property name="initialPoolSize">5</property>
  12. <property name="maxPoolSize">10</property>
  13. <property name="checkoutTimeout">3000</property>
  14. </default-config>
  15.  
  16. <named-config name="otherc3p0">
  17. <!-- 连接参数 -->
  18. <property name="driverClass">com.mysql.jdbc.Driver</property>
  19. <property name="jdbcUrl">jdbc:mysql://localhost:3306/database</property>
  20. <property name="user">root</property>
  21. <property name="password">xxx</property>
  22.  
  23. <!-- 连接池参数 -->
  24. <property name="initialPoolSize">5</property>
  25. <property name="maxPoolSize">8</property>
  26. <property name="checkoutTimeout">1000</property>
  27. </named-config>
  28. </c3p0-config>

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

(4)获取连接: getConnection

示例:

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

4.Druid数据库连接技术

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

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

(3)加载配置文件。Properties

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

(5)获取连接:getConnection

示例:

配置文件:

  1. 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

代码:

  1. public class Demo2 {
  2. public static void main(String[] args) throws Exception {
  3. // 加载配置文件
  4. Properties properties = new Properties();
  5. InputStream is = Demo2.class.getClassLoader().getResourceAsStream("druid.properties");
  6. properties.load(is);
  7.  
  8. //获取连接池对象
  9. DataSource ds = DruidDataSourceFactory.createDataSource(properties);
  10.  
  11. // 获取连接
  12. Connection connection = ds.getConnection();
  13.  
  14. System.out.println(connection);
  15. }
  16. }

数据库连接池(c3p0与druid)的更多相关文章

  1. 数据库连接池优化配置(druid,dbcp,c3p0)

    主要描述了数据库连接池参数配置的准则,针对常用的数据库连接池(c3p0,dbcp,druid)给出推荐的配置. 考虑因素 1:当前连接DB的规模   2:并发情况 3:执行db的响应时间 配置考虑 1 ...

  2. 数据库连接池 c3p0 druid

    druid 数据库连接池 c3p0 使用C3P0数据源时需要依赖 mchange-commons-java-0.2.3.4.jar包.缺少该jar包则会报错!

  3. 数据库连接池——C3P0&Druid(快速入门)

    数据库连接池--C3P0&Druid (一) 数据库连接池 每一个事物都有其存在的意义,在初学jdbc的时候,我们建立数据库连接对象后,会对其进行释放,但是数据库连接的建立和关闭是非常消耗资源 ...

  4. 从零开始学 Java - 数据库连接池的选择 Druid

    我先说说数据库连接 数据库大家都不陌生,从名字就能看出来它是「存放数据的仓库」,那我们怎么去「仓库」取东西呢?当然需要钥匙啦!这就是我们的数据库用户名.密码了,然后我们就可以打开门去任意的存取东西了. ...

  5. 数据库连接池的选择 Druid

    我先说说数据库连接 数据库大家都不陌生,从名字就能看出来它是「存放数据的仓库」,那我们怎么去「仓库」取东西呢?当然需要钥匙啦!这就是我们的数据库用户名.密码了,然后我们就可以打开门去任意的存取东西了. ...

  6. 数据库连接JDBC和数据库连接池C3P0自定义的java封装类

    数据库连接JDBC和数据库连接池C3P0自定义的java封装类 使用以下的包装类都需要自己有JDBC的驱动jar包: 如 mysql-connector-java-5.1.26-bin.jar(5.1 ...

  7. JAVA数据库连接池C3p0 以及阿里Druid提供的连接池

    一:连接池的定义 本质上就是个容器(集合) 存放数据库连接的容器,当系统初始化后,容器被创建,容器中就会申请一些连接对象,当用户来访问数据库的时候,从容器中取连接对象,用户用完之后,归还. 二:常用的 ...

  8. 【Druid】 阿里巴巴推出的国产数据库连接池com.alibaba.druid.pool.DruidDataSource

    阿里巴巴推出的国产数据库连接池,据网上测试对比,比目前的DBCP或C3P0数据库连接池性能更好   简单使用介绍 Druid与其他数据库连接池使用方法基本一样(与DBCP非常相似),将数据库的连接信息 ...

  9. 连接池c3p0 ,Proxool ,Druid ,Tomcat Jdbc Pool对比测试

    这次所要做的测试是比较几种我们常用的数据库连接池的性能,他们分别是:c3p0 ,Proxool ,Druid ,Tomcat Jdbc Pool这四种,测试将采用统一的参数配置力求比较“公平”的体现统 ...

随机推荐

  1. 【比赛】HNOI2018 毒瘤

    虚树+dp 直接看zlttttt的强大题解 zlttttt的题解看这里 #include<bits/stdc++.h> #define ui unsigned int #define ll ...

  2. OpenCV C++如何使RGB图像变为灰度图像

    http://m.blog.csdn.net/blog/u014395105/41308979 最近在研究如何用C++来处理图像,而不使用封装好的OpenCV代码,这样能够更好的了解OpenCV的内部 ...

  3. 在 Ubuntu16.04上安装anaconda+Spyder+TensorFlow(支持GPU)

    TensorFlow 官方文档中文版 http://www.tensorfly.cn/tfdoc/get_started/introduction.html https://zhyack.github ...

  4. python中如何优雅续行和换行

    http://note.youdao.com/noteshare?id=8dbcb93991a89a6cfcd95580ed2198f0

  5. 手脱ACProtect v1.35(无Stolen Code)之二

    首先,想说明的是这个壳在我的PC上是可以用上一个帖子中的方法来到假的OEP的:http://www.52pojie.cn/forum.php?mod=viewthread&tid=433462 ...

  6. dalao&话

    最大权闭合子图 正负点权之间连边,容量为无穷大,代表正负之间有联系,跑最小割,要么舍弃正的要么舍弃负的,就是把图割开

  7. NOIP模拟1

    期望得分:100+100+100=300 实际得分:94+96+97=287 T1  #6090. 「Codeforces Round #418」尘封思绪 #include<cstdio> ...

  8. 边双连通缩点+树dp 2015 ACM Arabella Collegiate Programming Contest的Gym - 100676H

    http://codeforces.com/gym/100676/attachments 题目大意: 有n个城市,有m条路,每条路都有边长,如果某几个城市的路能组成一个环,那么在环中的这些城市就有传送 ...

  9. Flexbox兼容性

    .flex-container{ display: -webkit-box; /* Chrome 4+, Safari 3.1, iOS Safari 3.2+ */ display: -moz-bo ...

  10. 强制换行CSS样式

    语法: word-wrap : normal | break-word 取值: normal :? 默认值.允许内容顶开指定的容器边界 break-word :? 内容将在边界内换行.如果需要,词内换 ...