连接池(C3P0&DRUID)DBUtils-DRUID
Posted 深度学习及机器智能学习
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了连接池(C3P0&DRUID)DBUtils-DRUID相关的知识,希望对你有一定的参考价值。
DRUID(德鲁伊)也是一个第三方的连接池, 但这个是阿里巴巴公司提供的, 号称光连接池, 可见速度是极快的, 使用连接池开发的另个好处是我们的DataSource对象在一个线程用完后, 会把这个dataSource归还到连接池中, 如果我们不使用连接池, 那么我们的程序每执行一个, 就得创建一个, 这样太费时间了.下面介绍这个高效的jar包.
第一步: 环境的准备, 需要准备DRUID的jar包, 以及配置文件:
# 数据库连接参数
url=jdbc:mysql://localhost:3306/day20_1
username=root
password=root
driverClassName=com.mysql.jdbc.Driver
# 连接池的参数
initialSize=10
maxActive=10
maxWait=2000
解释: 这些也跟c3p0差不太多, 该改的地方也就那几个.
第二步: 编写代码实现(DRUIDUtils)
package com.p02DRUID;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
public class DRUIDUtils {
private static Properties properties = new Properties();
private static DataSource getProperties() throws Exception{
properties.load(DRUIDUtils.class.getClassLoader().getResourceAsStream("druid.properties"));
DataSource dataSource = DruidDataSourceFactory.createDataSource(properties);
return dataSource;
}
/**
* 获得Connection连接对象
* @return Connection connection;
* @throws Exception
*/
public static Connection getConnection() throws Exception{
Connection connection = getProperties().getConnection();
return connection;
}
/**
* 获得连接池对象.
* @return DataSource dataSource;
*/
public static DataSource getDataSource() throws Exception {
return getProperties();
}
/**
* 关闭资源.
* @param resultSet
* @param statement
* @param connection
*/
public static void release(ResultSet resultSet, Statement statement, Connection connection){
if (resultSet != null){
try {
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (statement != null){
try {
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (connection != null){
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
解释:
DRUIDUtils唯一不同的就是连接数据库的方法. 它需要用属性集的方式去读取properties.load(DRUIDUtils.class.getClassLoader().getResourceAsStream("druid.properties")); 这条语句就可以把druid的配置文件数据加载到属性集对象中.
DruidDataSourceFactory.createDataSource(properties); 将properties传入create
DataSource()中就可以创建一个连接池了.
其他方法功能与c3p0一致.
第三步: 使用druidutils:
package com.p02DRUID;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class Testdruid {
public static void main(String[] args) throws Exception {
Connection connection = DRUIDUtils.getConnection();
String sql = "select * from t_user where id = ?";
PreparedStatement ps = connection.prepareStatement(sql);
ps.setInt(1, 1);
ResultSet resultSet = ps.executeQuery();
while (resultSet.next()){
System.out.println(resultSet.getObject("id"));
System.out.println(resultSet.getObject("uname"));
System.out.println(resultSet.getObject("age"));
System.out.println(resultSet.getObject("sex"));
}
DRUIDUtils.release(resultSet, ps, connection);
}
}
(Testdruid.java)执行结果
扫二维码关注
愿你是永远奔腾的
千里码
以上是关于连接池(C3P0&DRUID)DBUtils-DRUID的主要内容,如果未能解决你的问题,请参考以下文章
数据连接池(c3p0+druid)及JDBC Template
主流Java数据库连接池分析(C3P0,DBCP,TomcatPool,BoneCP,Druid)