0

我创建了 JDBC 驱动程序的实现,它反过来管理与两个 DB(例如 postgres 和 mysql)的连接。对于所有 JDBC 操作,这些连接都会根据特定的逻辑请求进行维护。我的问题是

  1. 这是一个好方法吗?如果没有,任何人都可以提供一些指示
  2. 内存管理将成为这种实现的一个问题?
4

2 回答 2

3

1)通常这种东西是由一个DAO(Data Access Object,一个管理持久性的层)来管理的。使其成为 JDBC 驱动程序只会迫使您遵循某些限制,从而使编码变得更加困难(我知道您的驱动程序不会非常可重用)。

2)取决于你编码它的好坏。没有更多细节很难说,但是没有理由你必须有内存管理问题。

于 2013-10-12T01:45:33.817 回答
2

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

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

有两种方法效果更好(IMO)。

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

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


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

于 2013-10-12T02:13:46.147 回答