2010-11-24 6 views
0

Angenommen, ich habe eine App, die idealerweise in der Lage sein sollte, eine relationale Datenbank, Objektdatenbank, XML-Dateien oder was auch immer zu verwenden, um ihre Daten zu erhalten. Im Sinne der Programmierung von Schnittstellen anstelle von Implementierungen habe ich eine generische DataStore-Schnittstelle, die einen Vertrag für alle E/A-Vorgänge angibt, an denen der Datenspeicher beteiligt ist. Diese Schnittstelle kann durch konkrete Klassen wie RDBMSDataStore, OODBMSDataStore, XMLFileDataStore usw. implementiert werden.Datenbankunabhängige Abfragen an das Extrem in Java ... oder allgemein

Diese gut, so lange funktioniert, wie ich den Inhalt des Datastore-Schnittstelle einfach zu halten - das heißt getThis(), getThose(), saveThat(), updateThis(), etc. Aber sobald ich kompliziertere Abfragen erfordern, es bricht. Die XMLFileDataStore-Klasse versteht SQL offensichtlich nicht, und die RDBMSDataStore-Klasse versteht XPath/XQuery offensichtlich nicht. Und OODBMSDataStore versteht abhängig von den verwendeten OODBMS etwas völlig anderes.

Ich könnte eine Sprache-unabhängige Objektabfragesprache adoptieren, schreibe alle meine Abfragen darin und lasse dann die konkreten Klassen sie in ihre Muttersprache übersetzen, aber das ist eine riesige Aufgabe, wenn ich vollständig sein will.

Gibt es Standards oder Best Practices für den Umgang mit dieser Art von Situation in Java? Leider scheint 99% der Welt "Datenbankunabhängigkeit" als "relationale Datenbankunabhängigkeit" zu interpretieren und ignoriert die Objektdatenbanken, XML-Datenbanken, Dokumentendatenbanken usw. gänzlich.

Antwort

0

Von der Art, wie ich die Frage lese, klingt dies sehr ähnlich wie die Semantik, die Hibernate für Java auf den Tisch bringt. Es hat sogar einen Modus für den Umgang mit XML als Content Backing Store (mit Dom4J). Die Hibernate-API verfügt über eine Reihe von Erweiterungspunkten, die das Hinzufügen eines OODBMS-Modells ermöglichen. Selbst wenn sich Hibernate nicht als die beste Lösung für Sie erweist (Implementierung), denke ich, dass es ein gutes Beispiel für die Arten von Mustern ist, die zur Lösung der von Ihnen vorgeschlagenen Probleme verwendet werden können.

Verwandte Themen