0

理想的には、リレーショナル データベース、オブジェクト データベース、XML ファイルなどを使用してデータを永続化できるアプリがあるとします。実装ではなくインターフェイスにコーディングするという精神で、データ ストアに関連するすべての I/O のコントラクトを指定する汎用 DataStore インターフェイスを用意しました。このインターフェースは、RDBMSDataStore、OODBMSDataStore、XMLFileDataStore などの具象クラスによって実装できます。

getThis()これは、DataStore インターフェースの内容を単純に ( 、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 に答える