2010-11-24 5 views
0

私は理想的には、リレーショナルデータベース、オブジェクトデータベース、XMLファイルなどを使用してデータを保持する必要があるアプリケーションを持っているとします。実装ではなくインターフェイスへのコーディングの精神で、データストアに関連するすべてのI/Oの契約を指定する汎用のDataStoreインターフェイスがあります。このインタフェースは、RDBMSDataStore、OODBMSDataStore、XMLFileDataStoreなどの具象クラスによって実装できます。Javaの極端にデータベースに依存しないクエリ...または一般的に

これは、限り、私は、単純なデータストアインターフェースの内容を保つよううまく機能 - すなわちなどgetThis()getThose()saveThat()updateThis()、しかし、すぐに、私はより複雑なクエリを必要とするので、それが分解します。 XMLFileDataStoreクラスは明らかにSQLを理解せず、RDBMSDataStoreクラスは明らかにXPath/XQueryを理解しません。また、OODBMSDataStoreは、使用中のOODBMSによってまったく異なるものを認識します。

私は言語に依存しないオブジェクトクエリ言語を採用し、その中のすべてのクエリを書いてから具体的なクラスをそれらの母国語に翻訳させることができますが、完成したければそれは大きな仕事です。

Javaでこのような状況を処理するための標準またはベストプラクティスはありますか?残念ながら、世界の99%が「データベースの独立性」を「リレーショナルデータベースの独立性」と解釈し、オブジェクトデータベース、XMLデータベース、ドキュメントデータベースなどを完全に無視するようです。

答えて

0

私は質問を読む方法から、これはHibernateがJava用のテーブルにもたらす意味によく似ています。それには、コンテンツバッキングストアとしてXMLを扱うモード(Dom4Jを使用)もあります。 Hibernate APIには、OODBMSモデルの追加を可能にする拡張ポイントがいくつかあります。 Hibernateが最適なソリューションではない(実装上)と判明したとしても、あなたが提案した問題を解決するために使用できるパターンの種類の良い例を提供すると思います。

関連する問題