超微型Java數據庫連接池
在某些情況下,超微型的數據庫連接池很實用,比如做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是一個高效的易配置的數據庫連接池。它除了支持連接池應有的功能之外,還包括了一個對象池使你能夠開發一個滿足自已需求的數據庫連接池。