0

假设我有一个应用程序,理想情况下应该能够使用关系数据库、对象数据库、XML 文件或其他任何东西来保存其数据。本着对接口而不是实现进行编码的精神,我有一个通用的 DataStore 接口,它为涉及数据存储的所有 I/O 指定了一个协定。该接口可以通过RDBMSDataStore、OODBMSDataStore、XMLFileDataStore等具体类来实现。

只要我保持 DataStore 接口的内容简单(即getThis()getThose()saveThat()updateThis()等),这种方法就可以很好地工作。但是一旦我需要更复杂的查询,它就会崩溃。XMLFileDataStore 类显然不理解 SQL,RDBMSDataStore 类显然不理解 XPath/XQuery。OODBMSDataStore 根据使用的 OODBMS 理解完全不同的东西。

我可以采用一种独立于语言的对象查询语言,用它编写所有查询,然后让具体的类将它们翻译成它们的母语,但如果我想完整的话,这是一项艰巨的任务。

在 Java 中处理这种情况是否有标准或最佳实践?不幸的是,似乎世界上 99% 的人将“数据库独立性”解释为“关系数据库独立性”,而完全忽略了对象数据库、XML 数据库、文档数据库等。

4

1 回答 1

0

从我阅读问题的方式来看,这听起来很像Hibernate为 Java 带来的语义。它甚至具有处理 XML 作为内容后备存储的模式(使用 Dom4J)。Hibernate API 有许多扩展点,可以允许添加 OODBMS 模型。即使 Hibernate 被证明不是您的最佳解决方案(实现方面),我认为它提供了可用于解决您提出的问题的模式类型的一个很好的示例。

于 2010-11-24T02:02:09.380 回答