私は理想的には、リレーショナルデータベース、オブジェクトデータベース、XMLファイルなどを使用してデータを保持する必要があるアプリケーションを持っているとします。実装ではなくインターフェイスへのコーディングの精神で、データストアに関連するすべてのI/Oの契約を指定する汎用のDataStoreインターフェイスがあります。このインタフェースは、RDBMSDataStore、OODBMSDataStore、XMLFileDataStoreなどの具象クラスによって実装できます。Javaの極端にデータベースに依存しないクエリ...または一般的に
これは、限り、私は、単純なデータストアインターフェースの内容を保つよううまく機能 - すなわちなどgetThis()
、getThose()
、saveThat()
、updateThis()
、しかし、すぐに、私はより複雑なクエリを必要とするので、それが分解します。 XMLFileDataStoreクラスは明らかにSQLを理解せず、RDBMSDataStoreクラスは明らかにXPath/XQueryを理解しません。また、OODBMSDataStoreは、使用中のOODBMSによってまったく異なるものを認識します。
私は言語に依存しないオブジェクトクエリ言語を採用し、その中のすべてのクエリを書いてから具体的なクラスをそれらの母国語に翻訳させることができますが、完成したければそれは大きな仕事です。
Javaでこのような状況を処理するための標準またはベストプラクティスはありますか?残念ながら、世界の99%が「データベースの独立性」を「リレーショナルデータベースの独立性」と解釈し、オブジェクトデータベース、XMLデータベース、ドキュメントデータベースなどを完全に無視するようです。