我是靠谱客的博主 重要绿草,最近开发中收集的这篇文章主要介绍数据库连接池技术(c3p0 与 druid)数据库连接池概念数据库连接池技术,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

  • 数据库连接池概念
  • 数据库连接池技术
    • 使用 C3P0 数据库连接池技术创建数据库连接对象:
    • 使用 Druid 数据库连接池技术创建数据库连接对象:
    • 使用 Druid 技术的 JDBC 工具类
    • 使用普通方法创建单个连接对象

数据库连接池概念

概念:其实就是一个容器(集合),存放数据库连接对象的容器。

  • 当系统初始化好后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时,从容器中获取连接对象,用户访问完之后,会将连接对象归还给容器。

  • 好处:

    1.节约资源

    2.用户访问高效

接口类与方法:
标准接口:javax.sql 包下的 DataSource 接口
主要方法:

  • 获取连接:getConnection()。
  • 归还连接:conn.close()。如果连接对象 conn 是从数据库连接池中获取的,那么调用conn.close()方法,则不会再关闭连接了,而是归还连接,数据库连接池技术更改了该方法。

由数据库厂商来实现主要数据库连接池技术

  1. C3P0:数据库连接池技术
  2. Druid:数据库连接池实现技术,由阿里巴巴提供的

数据库连接池技术

使用 C3P0 数据库连接池技术创建数据库连接对象:

使用步骤:

  1. 导入jar包 (两个) c3p0-0.9.5.2.jar 与 依赖的 mchange-commons-java-0.2.12.jar 。
  2. 定义配置文件:
    • 名称:c3p0.properties 或者 c3p0-config.xml (只能是这两个形式,数据库连接池会自动寻找这两种文件用来创建连接对象)(自动加载)
    • 路径:直接将配置文件放在src目录下即可(默认)。
  3. 创建核心对象:数据库连接池对象 ComboPooledDataSource
  4. 获取数据库连接对象: getConnection()

代码:

//该技术不需要加载配置文件,只要在项目中存在上述的配置文件即可,该技术会自动寻找并加载配置文件 
//该技术中已经实现注册驱动代码
//1.创建数据库连接池对象
DataSource ds
= new ComboPooledDataSource();
//2.获取连接对象
Connection conn = ds.getConnection();

使用 Druid 数据库连接池技术创建数据库连接对象:

使用步骤:

  1. 导入 jar 包 druid-1.0.9.jar
  2. 定义配置文件:
    • 是以 properties 文件形式的
    • 可以叫任意名称,可以放在任意目录下
  3. 加载 Properties 配置文件(不是自动加载的)
  4. 获取数据库连接池对象:通过工厂类来获取 DruidDataSourceFactory 的 createDataSource() 方法。
  5. 获取连接:getConnection

代码:


//该技术需要手动加载配置文件
//1. 创建Properties集合类
Properties pro = new Properties();
//2. 通过类加载器获得配置文件资源。加载当前类 DruidDemo 为当前类
InputStream is = DruidDemo.class.getClassLoader().getResourceAsStream("druid.properties");
//3. 加载配置文件进内存
pro.load(is);
//该技术中已经实现注册驱动代码
//4. 获取数据库连接池对象
DataSource ds = DruidDataSourceFactory.createDataSource(pro);
//5. 获取数据库连接对象
Connection conn = ds.getConnection();

使用 Druid 技术的 JDBC 工具类

/*
1. 声明静态数据源成员变量
2. 创建连接池对象
3. 定义公有的得到数据源的方法
4. 定义得到连接对象的方法
5. 定义关闭资源的方法
*/
public class JDBCUtils {
// 1.声明静态数据源成员变量
private static DataSource ds;
// 2. 创建连接池对象
static {
try {
// 加载配置文件中的数据
InputStream is = JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties");
Properties pro = new Properties();
pro.load(is);
// 创建连接池,使用配置文件中的参数
ds = DruidDataSourceFactory.createDataSource(pro);
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
// 3.定义得到数据源的方法
public static DataSource getDataSource() {
return ds;
}
// 4.定义得到连接对象的方法
public static Connection getConnection() throws SQLException {
return ds.getConnection();
}
// 5.定义关闭资源的方法
public static void close(Connection conn, Statement stmt, ResultSet rs) {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {}
}
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {}
}
}
// 6.重载关闭方法
public static void close(Connection conn, Statement stmt) {
close(conn, stmt, null);
}
}

使用普通方法创建单个连接对象

1、使用配置文件

// 不使用配置资源
// 1. 导入驱动jar包
// 2. 注册驱动
Class.forName("com.mysql.jdbc.Driver"); // 这个全类名在数据驱动包中
//3. 获取数据库连接对象
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db3", "root", "root");

2、不适用配置文件

// 使用配置资源
// 创建Properties集合类
Properties pro = new Properties();
//这里使用绝对路径,但当该文件路径变了,需要改变代码。
//pro.load(new FileReader("E:\Idea\JDBC_project\jdbc_module\src\com\qgl\jdbc.properties"));
//内加载器,JDBC为当前类,获得当前类的字节码文件对象。
ClassLoader cla = JDBCUtils.class.getClassLoader();
//使用该对象的getResource()方法可以得到配置文件资源。返回的是URL对象,即文件路径对象。
URL urlPath
= cla.getResource("jdbc.properties"); //放在不同级目录,参数传递的路径级数不一样。这里直接将文件放在src目录下。
//得到配置文件资源的字符串路径。
String path = urlPath.getPath();
//加载配置文件
pro.load(new FileReader(path));
//配置资源中有驱动路径数据,从配置资源中获取该数据
driver = pro.getProperty("driver");
//在JDBC数据连接使用,注册驱动
Class.forName(driver);
//获取数据库连接对象
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db3", "root", "root");

最后

以上就是重要绿草为你收集整理的数据库连接池技术(c3p0 与 druid)数据库连接池概念数据库连接池技术的全部内容,希望文章能够帮你解决数据库连接池技术(c3p0 与 druid)数据库连接池概念数据库连接池技术所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部