我创建了 JDBC 驱动程序的实现,它反过来管理与两个 DB(例如 postgres 和 mysql)的连接。对于所有 JDBC 操作,这些连接都会根据特定的逻辑请求进行维护。我的问题是
- 这是一个好方法吗?如果没有,任何人都可以提供一些指示
- 内存管理将成为这种实现的一个问题?
1)通常这种东西是由一个DAO(Data Access Object,一个管理持久性的层)来管理的。使其成为 JDBC 驱动程序只会迫使您遵循某些限制,从而使编码变得更加困难(我知道您的驱动程序不会非常可重用)。
2)取决于你编码它的好坏。没有更多细节很难说,但是没有理由你必须有内存管理问题。
我不认为这是一个好方法。
根本问题是不同的数据库后端具有难以用统一的 JDBC 驱动程序“掩盖”的差异。最明显的问题是 SQL 的不同方言之间存在(显着)差异......包括支持的数据类型的差异。很难(甚至不可能)隐藏这些差异,因为您的应用程序级代码正在使用通常使用的 JDBC API。
有两种方法效果更好(IMO)。
典型的对象-关系映射(例如休眠)将为处理差异的多个数据库后端提供适配器。他们通过以更抽象的方式表达您的查询,并在后台将查询转换为特定于数据库的 SQL 来做到这一点。
自己处理特定于数据库的方面......在特定于您的应用程序的数据库适配器代码中。这需要构建您自己的框架来生成或模板化查询以处理方言差异。然后,您使用现有的特定于数据库的 JDBC 驱动程序,向它们传递正确类型的 SQL。
FWIW - 我不明白为什么内存管理是您提案的一个特殊问题。