在 javase 数据库应用程序中,我处理了许多短期对象(比如账单等会计文件)。
处理每个对象包括打开与数据库的连接并查找一些数据。并非所有对象都在同一个数据库中查找,但我根据某些对象属性选择了一个特定的数据库,所以我最终会打开几个连接。
我真正需要的是每个数据库不超过一个连接。
所以我做了这样的事情:
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 和其他库:所有这些库的意义何在,它们为这样的“基本”方法添加了什么?像这样
的
教程对回答这个问题没有多大帮助,因为这里公开的基本解决方案完全符合他们对连接池的定义。
2)这是一段将“公开”给其他开发人员的代码,进而可以开发程序以从具有不同结构的数据库中检索数据,可能从这个“池对象”获取连接。
在文档和代码中将其称为“池”是否正确,或者它是否不同,因此调用“池”会产生误导?