在某些情况下,超微型的数据库连接池很实用,比如做GUI编程、程序开发初级阶段,超微型的连接池的好处就是初始化速度快、依赖包少,或者干脆不依赖第三方包,可以大大缩短工程的启动时间,和测试运行的时间。
下面推荐三款快要被遗忘掉的数据库连接池:
一、Db Connection Broker |
DDConnectionBroker是一个简单,轻量级的数据库连接池,目前最新版本是2.0,好像官方的站点访问不了。
或者看看这个吧:
http://www.javaexchange.com/
public
class Test {
public static void main(String[] args) throws Exception {
DbConnectionBroker myBroker = new DbConnectionBroker( "com.mysql.jdbc.Driver",
"jdbc:mysql://192.168.104.163:3306/testdb_a",
"vcom", "vcom", 2, 6,
"c:\\test.log", 0.01);
Connection conn =myBroker.getConnection();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select * from tab_a");
while(rs.next()){
System.out.println(rs.getString(1)+" "+rs.getString(2));
}
}
}
public static void main(String[] args) throws Exception {
DbConnectionBroker myBroker = new DbConnectionBroker( "com.mysql.jdbc.Driver",
"jdbc:mysql://192.168.104.163:3306/testdb_a",
"vcom", "vcom", 2, 6,
"c:\\test.log", 0.01);
Connection conn =myBroker.getConnection();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select * from tab_a");
while(rs.next()){
System.out.println(rs.getString(1)+" "+rs.getString(2));
}
}
}
1 aaa
2 aaa
2 aaa
测试发现:
连接池工作良好,连接使用完毕后调用myBroker.freeConnection(conn);以便让池知道连接已经空闲了。或者调用conn.close()方法也可。
2、6分别是最小和最大连接数。
调试下面的例子,看程序执行过程就明白了。
public
class Test {
public static void main(String[] args) throws Exception {
DbConnectionBroker myBroker = new DbConnectionBroker( "com.mysql.jdbc.Driver",
"jdbc:mysql://192.168.104.163:3306/testdb_a",
"vcom", "vcom", 2, 4,
"c:\\test.log", 0.01);
Connection conn =myBroker.getConnection();
Connection conn1 =myBroker.getConnection();
Connection conn2 =myBroker.getConnection();
Connection conn3 =myBroker.getConnection();
Connection conn4 =myBroker.getConnection();
Connection conn5 =myBroker.getConnection();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select * from tab_a");
while(rs.next()){
System.out.println(rs.getString(1)+" "+rs.getString(2));
}
conn2.close();
myBroker.freeConnection(conn);
conn =myBroker.getConnection();
stmt = conn.createStatement();
rs = stmt.executeQuery("select * from tab_a");
while(rs.next()){
System.out.println(rs.getString(1)+" "+rs.getString(2));
}
myBroker.freeConnection(conn);
}
}
public static void main(String[] args) throws Exception {
DbConnectionBroker myBroker = new DbConnectionBroker( "com.mysql.jdbc.Driver",
"jdbc:mysql://192.168.104.163:3306/testdb_a",
"vcom", "vcom", 2, 4,
"c:\\test.log", 0.01);
Connection conn =myBroker.getConnection();
Connection conn1 =myBroker.getConnection();
Connection conn2 =myBroker.getConnection();
Connection conn3 =myBroker.getConnection();
Connection conn4 =myBroker.getConnection();
Connection conn5 =myBroker.getConnection();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select * from tab_a");
while(rs.next()){
System.out.println(rs.getString(1)+" "+rs.getString(2));
}
conn2.close();
myBroker.freeConnection(conn);
conn =myBroker.getConnection();
stmt = conn.createStatement();
rs = stmt.executeQuery("select * from tab_a");
while(rs.next()){
System.out.println(rs.getString(1)+" "+rs.getString(2));
}
myBroker.freeConnection(conn);
}
}
二、MiniConnectionPoolManager
MiniConnectionPoolManager是一个轻量级JDBC数据库连接池。它只需要Java1.5(或更高)并且没有依赖第三方包。
另外,该站点还有其他几款开源组件,都很不错。
三、DBPool
DBPool是一个高效的易配置的数据库连接池。它除了支持连接池应有的功能之外,还包括了一个对象池使你能够开发一个满足自已需求的数据库连接池。
本文转自 leizhimin 51CTO博客,原文链接:http://blog.51cto.com/lavasoft/184219,如需转载请自行联系原作者