处理两个JDBC驱动程序的通用JDBC驱动程序

时间:2013-10-12 01:38:56

标签: java jdbc

我已经创建了JDBC驱动程序的实现,后者又管理与两个DB的连接(例如,postgres和mysql)。对于所有JDBC操作,这些连接都是基于某些逻辑请求进行维护的。我的问题是

  1. 这是一个好方法吗?如果没有,任何人都可以给出一些指示
  2. 内存管理将成为此类实施的问题吗?

2 个答案:

答案 0 :(得分:3)

1)通常这种事情由DAO(数据访问对象,管理持久性的层)管理。使它成为JDBC驱动程序只会迫使您遵循某些限制,使其更难编码(我知道您的驱动程序不会非常可重用)。

2)取决于你编码的程度。没有更多细节,很难说,但没有理由为什么你必须有内存管理问题。

答案 1 :(得分:2)

我认为这不是一个好方法。

根本问题在于,不同的数据库后端存在难以用统一的JDBC驱动程序“完成”的差异。最明显的问题是SQL的不同方言之间存在(显着)差异...包括支持的数据类型的差异。隐藏这些差异很困难(不可能)是您的应用程序级代码正在使用通常使用的JDBC API。

有两种方法可以更好地运作(IMO)。

  • 典型的对象关系映射(例如hibernate)将为处理差异的多个数据库后端提供适配器。他们通过以更抽象的方式表达您的查询,并在后台将查询转换为特定于数据库的SQL来实现此目的。

  • 自行处理特定于数据库的方面...在特定于您的应用程序的数据库适配器代码中。这需要构建自己的框架来生成或模板化查询以处理方言差异。然后使用现有的特定于数据库的JDBC驱动程序,向它们传递正确的SQL。


FWIW - 我不明白为什么内存管理是你提案的一个特殊问题。