目录

一、举例解释连接池

二、c3p0

三、druid


一、举例解释连接池

一直用jdbc的我突然发现一个好东西,那就是连接池,举一个不恰当的例子来说说jdbc和连接池的区别

比如有一家餐馆,如果是jdbc的形式去运营该餐馆就是,每当来客人吃饭的时候,就需要去招工人,当客人走的时候,那你又把工人给辞了,也就是每次都需要获取连接,然后又要关闭连接的意思,如果是连接池的形式去运营该餐馆就是,在我刚开业的时候去招一些员工,每当有客人的时候,直接让员工去服务,客人走了,员工休息就行,也就是第一次的时候初始化一个连接数,放在一个池子里,每当用的时候直接去池子里取,用完之后再放回池子。

二、c3p0

在使用c3p0这个连接池的时候需要导入三个jar包,分别是c3p0的jar包、c3p0所依赖的jar包和数据库连接的jdbc包

c3p0的两个jar包官网下载链接Download c3p0:JDBC DataSources/Resource Pools from SourceForge.net

连接数据库的jdbc包,这里以mysql为例子,官方链接MySQL :: Download Connector/J

当把这三个jar包都导入之后,接下来就是代码了

首先是需要一个c3p0-config.xml的文件,放在src下,在这里需要注意它是认名字的,别起错名了

<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config><default-config><!--连接参数--><!--driverClass是mysql的数据库驱动--><property name="driverClass">com.mysql.jdbc.Driver</property><!--jdbcUrl是连接数据库的url,其中mydb是自己的数据库名--><property name="jdbcUrl">jdbc:mysql://localhost:3306/mydb?useSSL=false</property><!--user是数据库的用户名--><property name="user">root</property><!--password是数据库的密码--><property name="password">root</property><!--连接池参数--><!--initialPoolSize是初始化申请的连接数量,取值应在minPoolSize与maxPoolSize之间 --><property name="initialPoolSize">5</property><!--连接池中最大的连接数 --><property name="maxPoolSize">10</property><!--超时时间,就是连接等待的时间,超过这个时间就认为连接失败--><property name="checkoutTimeout">3000</property></default-config><named-config name="mysql"><!--连接参数--><property name="user">root</property><property name="password">root</property><property name="driverClass">com.mysql.jdbc.Driver</property><property name="jdbcUrl">jdbc:mysql://localhost:3306/mydb?useSSL=false</property><!--连接池参数--><property name="initialPoolSize">5</property><property name="maxPoolSize">8</property><property name="checkoutTimeout">3000</property></named-config>
</c3p0-config>

当把这个.xml文件写好后,需要再写一个java类

package com;import com.mchange.v2.c3p0.ComboPooledDataSource;import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;/*** c3p0的演示*/
public class C3P0Demo {public static void main(String[] args) throws SQLException {//创建数据库连接池对象,里面没有参数是默认参数,有参数的是我们自定义的DataSource ds = new ComboPooledDataSource();//DataSource ds = new ComboPooledDataSource("mysql");//获取连接对象Connection conn = ds.getConnection();//打印System.out.println(conn);}
}

到此就写完了,运行结果如下:

三、druid

讲完了c3p0再讲这个就简单多了,大致思想是一样的,这个只需导入两个包,druid包和数据库连接的jdbc包

druid下载链接http://repo1.maven.org/maven2/com/alibaba/druid/

jdbc下载链接MySQL :: Download Connector/J

当把这两个jar包导入之后,需要一个.properties文件,我这里是druid.properties文件,这个文件最好放在src下

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mydb
username=root
password=root
#初始化连接数
initialSize=5
#最大连接数
maxActive=10
#最大等待时间
maxWait=3000

接下来需要写一个java类

package com.druid;import com.alibaba.druid.pool.DruidDataSourceFactory;import javax.sql.DataSource;
import java.io.InputStream;
import java.sql.Connection;
import java.util.Properties;public class DruidDemo {public static void main(String[] args) throws Exception {//加载配置文件Properties pro = new Properties();InputStream is = DruidDemo.class.getClassLoader().getResourceAsStream("druid.properties");pro.load(is);//获取连接池对象DataSource ds = DruidDataSourceFactory.createDataSource(pro);//获取连接Connection conn = ds.getConnection();System.out.println(conn);}
}

运行结构如下:

Java数据库连接池c3p0和druid相关推荐

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

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

  2. Java 数据库连接池C3P0,德鲁伊(Druid)的详解

    博主前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住也分享一下给大家,

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

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

  4. 主流Java数据库连接池分析(C3P0,DBCP,TomcatPool,BoneCP,Druid)

    http://developer.51cto.com/art/201807/579402.htm 主流数据库连接池 常用的主流开源数据库连接池有C3P0.DBCP.Tomcat Jdbc Pool.B ...

  5. Java数据库连接池知识汇总(C3P0+DBCP+Druid)

    为什么要使用数据库连接池技术? 数据库连接池技术的优点 1. 资源重用 由于数据库连接得以重用,避免了频繁创建,释放连接引起的大量性能开销.在减少系统消耗的基础上,另一方面也增加了系统运行环境的平稳性 ...

  6. 主流Java数据库连接池比较及前瞻

    本文转载自微信公众号「工匠小猪猪的技术世界」 主流数据库连接池 常用的主流开源数据库连接池有C3P0.DBCP.Tomcat Jdbc Pool.BoneCP.Druid等 C3p0: 开源的JDBC ...

  7. Java 数据库连接池的技术选型都应考虑哪些要素

    为什么80%的码农都做不了架构师?>>>    数据库连接池是一个牵涉面很广的话题,对于大型系统,数据库连接池的好坏,关系到系统的性能和稳定性,因此,选好数据库连接池,是系统在架构时 ...

  8. java数据库连接池选择及开发配置

    一.数据库连接池概述 数据库连接的建立是一种耗时.性能低.代价高的操作,频繁的数据库连接的建立和关闭极大的影响了系统的性能.数据库连接池是系统初始化过程中创建一定数量的数据库连接放于连接池中,当程序需 ...

  9. 数据库连接池——C3P0:数据库连接池技术

    数据库连接池 1. 概念:其实就是一个容器(集合),存放数据库连接的容器. 当系统初始化好后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时,从容器中获取连接对象,用户访问完之后,会将连接 ...

最新文章

  1. python函数速查_Python语法速查: 7. 函数基础
  2. python四大高阶函数_详谈Python高阶函数与函数装饰器(推荐)
  3. eclipse java 运行快捷键_java – 可以使用Eclipse中的键盘快捷方式启动/停止Tomcat吗?...
  4. 如何使自己的不和谐机器人
  5. P5327-[ZJOI2019]语言【线段树合并,LCA】
  6. 简单版:带干扰线的图形验证码生成
  7. YUV422(UYVY)转RGB565源代码及其讲解.md
  8. 使用setTimeout 来实现setInterval的效果
  9. Tensorflow学习笔记1----基础分类模型
  10. ios 判断手机角度_iPhone那么贵,为什么电池还那么小呢?安卓手机电池都那么大了!...
  11. 在 WINDOWS 7 的 XAMPP 安裝 MEMCACHED 擴展
  12. 学计算机的学后感,计算机学习心得体会(通用10篇)
  13. 【转】平时看到的比较好的一篇文章,送给通信专业的学生
  14. 压力大对身体有没有伤害,你觉的有伤害就有伤害,你觉的没伤害就没伤害
  15. python量化交易书籍推荐_量化交易的几本书籍介绍
  16. 浅谈交易开拓者程序化
  17. 云模型的MATLAB实现
  18. 小米5 miui9 android8,小米5升级MIUI9速度对比MIUI8:开机就快10秒
  19. 怎么把有些网站上不能复制的文字复制下来
  20. 全文检索(一) -- Lucene

热门文章

  1. 23个小动作让你记忆力惊人
  2. Cocos2d-3.x Android环境搭建
  3. WebService学习笔记系列(四)
  4. SQL SERVER 2014 安装图解(含 SQL SERVER 2014 安装程序共享)
  5. OAuth 1.0a 的 C# 代码实现
  6. 软件测试流程和项目管理流程
  7. JMETER目录结构详解
  8. Shell基本应用(学习笔记)
  9. 关于Web端-UI自动化测试
  10. unity3d android 实时阴影,Unity移动端实时阴影绘制