概述
目录
- 数据库连接池概念
- 数据库连接池技术
- 使用 C3P0 数据库连接池技术创建数据库连接对象:
- 使用 Druid 数据库连接池技术创建数据库连接对象:
- 使用 Druid 技术的 JDBC 工具类
- 使用普通方法创建单个连接对象
数据库连接池概念
概念:其实就是一个容器(集合),存放数据库连接对象的容器。
-
当系统初始化好后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时,从容器中获取连接对象,用户访问完之后,会将连接对象归还给容器。
-
好处:
1.节约资源
2.用户访问高效
接口类与方法:
标准接口:javax.sql 包下的 DataSource 接口
。
主要方法:
- 获取连接:getConnection()。
- 归还连接:conn.close()。如果连接对象 conn 是从数据库连接池中获取的,那么调用conn.close()方法,则不会再关闭连接了,而是归还连接,数据库连接池技术更改了该方法。
由数据库厂商来实现主要数据库连接池技术
- C3P0:数据库连接池技术
- Druid:数据库连接池实现技术,由阿里巴巴提供的
数据库连接池技术
使用 C3P0 数据库连接池技术创建数据库连接对象:
使用步骤:
- 导入jar包 (两个) c3p0-0.9.5.2.jar 与 依赖的 mchange-commons-java-0.2.12.jar 。
- 定义配置文件:
- 名称:c3p0.properties 或者 c3p0-config.xml (只能是这两个形式,数据库连接池会自动寻找这两种文件用来创建连接对象)(自动加载)
- 路径:直接将配置文件放在src目录下即可(默认)。
- 创建核心对象:数据库连接池对象 ComboPooledDataSource
- 获取数据库连接对象: getConnection()
代码:
//该技术不需要加载配置文件,只要在项目中存在上述的配置文件即可,该技术会自动寻找并加载配置文件
//该技术中已经实现注册驱动代码
//1.创建数据库连接池对象
DataSource ds
= new ComboPooledDataSource();
//2.获取连接对象
Connection conn = ds.getConnection();
使用 Druid 数据库连接池技术创建数据库连接对象:
使用步骤:
- 导入 jar 包 druid-1.0.9.jar
- 定义配置文件:
- 是以 properties 文件形式的
- 可以叫任意名称,可以放在任意目录下
- 加载 Properties 配置文件(不是自动加载的)
- 获取数据库连接池对象:通过工厂类来获取 DruidDataSourceFactory 的 createDataSource() 方法。
- 获取连接: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)数据库连接池概念数据库连接池技术所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复