连接池(C3P0&DRUID)DBUtils-DRUID

Posted 深度学习及机器智能学习

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了连接池(C3P0&DRUID)DBUtils-DRUID相关的知识,希望对你有一定的参考价值。

连接池(C3P0&DRUID)DBUtils-DRUID 交易担保 微附件 02_druid-1.0.9.zip

DRUID(德鲁伊)也是一个第三方的连接池, 但这个是阿里巴巴公司提供的, 号称光连接池, 可见速度是极快的, 使用连接池开发的另个好处是我们的DataSource对象在一个线程用完后, 会把这个dataSource归还到连接池中, 如果我们不使用连接池, 那么我们的程序每执行一个, 就得创建一个, 这样太费时间了.下面介绍这个高效的jar包.


第一步: 环境的准备, 需要准备DRUID的jar包, 以及配置文件:

# 数据库连接参数url=jdbc:mysql://localhost:3306/day20_1username=rootpassword=rootdriverClassName=com.mysql.jdbc.Driver# 连接池的参数initialSize=10maxActive=10maxWait=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的主要内容,如果未能解决你的问题,请参考以下文章

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

数据连接池(c3p0+druid)及JDBC Template

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

c3p0,DBPC,Druid三大连接池的区别/性能面试+工作

数据库连接池的使用(c3p0,Druid)

Alibaba-Druid 连接池使用