简介
在上周阅读Alibaba Druid数据库连接池后,感觉光看有点领会不到精髓,后面这几篇文章将尝试自己实现一个数据库连接池Demo
原生JDBC与Alibaba Druid使用
我们先把相关的测试给搭建起来,把JDBC、Druid的相关示例代码跑起来,看看效果和性能
在实现一个最简单的自定义连接池,然后运行三者进行对比
原生JDBC
我们先使用原生JDBC将数据库数据初始化,然后去查询,代码如下:
public class Main {
static final String DB_URL = "jdbc:h2:file:./demo-db";
static final String USER = "sa";
static final String PASS = "sa";
/**
* 生成数据
*/
private static void initData() {
final String drop = "drop table `user_example` if exists;";
final String createTable = "CREATE TABLE IF NOT EXISTS `user_example` (" +
"`id` bigint NOT NULL AUTO_INCREMENT, " +
"`name` varchar(100) NOT NULL" +
");";
final String addUser = "insert into user_example (name) values(%s)";
try(Connection conn = DriverManager.getConnection(DB_URL, USER, PASS);
Statement stmt = conn.createStatement()) {
stmt.execute(drop);
stmt.execute(createTable);
for (int i=0; i<10; i++) {
stmt.execute(String.format(addUser, i));
}
conn.commit();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
然后原始暴力查询:
public class Main {
/**
* 原生JDBC查询
*/
private static void rawExample() {
for (int i=0; i<queryAmount; i++) {
// Open a connection
try(Connection conn = DriverManager.getConnection(DB_URL, USER, PASS);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(QUERY)