我已经创建了JDBC驱动程序的实现,后者又管理与两个DB的连接(例如,postgres和mysql)。对于所有JDBC操作,这些连接都是基于某些逻辑请求进行维护的。我的问题是
答案 0 :(得分:3)
1)通常这种事情由DAO(数据访问对象,管理持久性的层)管理。使它成为JDBC驱动程序只会迫使您遵循某些限制,使其更难编码(我知道您的驱动程序不会非常可重用)。
2)取决于你编码的程度。没有更多细节,很难说,但没有理由为什么你必须有内存管理问题。
答案 1 :(得分:2)
我认为这不是一个好方法。
根本问题在于,不同的数据库后端存在难以用统一的JDBC驱动程序“完成”的差异。最明显的问题是SQL的不同方言之间存在(显着)差异...包括支持的数据类型的差异。隐藏这些差异很困难(不可能)是您的应用程序级代码正在使用通常使用的JDBC API。
有两种方法可以更好地运作(IMO)。
典型的对象关系映射(例如hibernate)将为处理差异的多个数据库后端提供适配器。他们通过以更抽象的方式表达您的查询,并在后台将查询转换为特定于数据库的SQL来实现此目的。
自行处理特定于数据库的方面...在特定于您的应用程序的数据库适配器代码中。这需要构建自己的框架来生成或模板化查询以处理方言差异。然后使用现有的特定于数据库的JDBC驱动程序,向它们传递正确的SQL。
FWIW - 我不明白为什么内存管理是你提案的一个特殊问题。