在一个javase数据库应用程序中,我处理了很多短暂的对象(比如帐单等会计凭证)。
处理每个对象包括打开到数据库的连接并查找一些数据。并不是所有的对象都在同一个数据库上查找,但是我根据某些对象属性选择了一个特定的数据库,所以我最终会打开几个连接。
我实际需要的是每个数据库不超过一个连接。
所以我做了这样的事情:
是public Connection getInstance(String databasename);连接池的一种形式?
public MyPool {
Map<String, Connection> activeConnections = new TreeMap<String, Connection>();
public Connection getConnection(String database_name) throws SQLException {
if (activeConnections.containsKey(database_name)) {
return activeConnections.get(database_name);
}
//Retrive the configuration data from a configuration object
ConnectionConfig c = Configuration.getConnectionConfig(database_name);
Connection connection = DriverManager.getConnection(c.url, c.user, c.password);
return connection;
}
的问题是:
1)因为我身边有很多汇集库,DBCP,C3P0和他人看:什么是点所有这些图书馆,他们添加了什么样的“基本”方法?
像this这样的教程对回答这个问题没有多大帮助,因为这里公开的基本解决方案完全符合他们对连接池的定义。
2)这段代码将“暴露”给其他开发者,反过来可能开发过程从不同结构的数据库检索数据,可能从这个“池对象”获取连接。
在文档和代码中,它是否正确地将其称为“池”,或者它是不同的,因此调用“池”会引起误解?
你会使用多线程吗? – SLaks 2012-08-14 14:32:03
他们经过测试,他们是可配置的,他们是通用的。 – 2012-08-14 14:33:20
我确实使用多个线程,但所有数据库活动都将在一个线程中执行。 – AgostinoX 2012-08-14 14:33:58