Ich habe praktisch keine Erfahrung mit Hibernate, obwohl ich zuvor ähnliche Persistenzbibliotheken in anderen Sprachen verwendet habe. Ich arbeite an einem Java-Projekt, das eine Möglichkeit zur Definition von "Modellen" (im MVC-Sinne) in Textkonfigurationsdateien, die automatische Generierung der Datenbanktabellen und (im Idealfall) die Datenbank-Backend-Agnostik erfordert. Soweit ich das durch ein schnelles Googeln feststellen kann, ist Hibernate die einzige weit verbreitete Backend-agnostische Java-Datenbankbibliothek; während ich meine eigene Kompatibilitätsebene zwischen meinem Modellsystem und mehreren DB-Backends schreiben könnte, ist das ein Debugging-Projekt, das ich möglichst vermeiden sollte.
Meine Frage lautet: Kann Hibernate verwendet werden, um Daten zu speichern, deren Struktur auf eine andere Weise als eine mit Anmerkungen versehene Java-Klassendatei dargestellt wird, z. B. eine HashMap mit einem Konfigurationsobjekt, das ihre Struktur beschreibt? Und wenn nicht, gibt es noch andere relativ stabile Java-Datenbankbibliotheken, die diese Funktionalität bieten könnten?
BEARBEITEN: Hier ist eine klarere Beschreibung dessen, was ich erreichen möchte:
Ich schreibe eine Datenmodellierungsbibliothek. Wenn eine bestimmte Methode der Bibliothek aufgerufen und ein Konfigurationsobjekt (geladen aus einer Textdatei) übergeben wird, sollte ein neues "Modell" erstellt und gegebenenfalls eine Datenbanktabelle für dieses Modell erstellt werden. Die Bibliothek kann nach Elementen dieses Modells abgefragt werden, die HashMaps mit den Feldern der Modelle zurückgeben sollen. Es sollte auch ermöglichen, dass HashMaps in der Datenbank gespeichert werden, vorausgesetzt, ihre Struktur stimmt mit den Konfigurationsdateien überein. Keines dieser Modelle sollte durch tatsächlich kompilierte Java-Klassen repräsentiert werden.
Ich glaube nicht, dass Hibernate Ihnen eine Map als @Entity zur Verfügung stellen wird, aber Sie können eine benutzerdefinierte Klasse mit einem Kartenfeld verwenden:
%Vor%(Beispiel aus Hibernate-Dokumenten)
Außerdem müssen Sie keine Anmerkungen verwenden (wenn Sie das vermeiden möchten): Hibernate-Beziehungen können über XML-Dateien beschrieben werden, und es gibt Dienstprogramme (beispielsweise Maven-Plugins), die automatisch die notwendigen generieren können Java Pojos aus dem XML.
Benötigt Ihr Modell eine relationale Datenbank? Sie könnten eine Datenbank wie Mongo in Erwägung ziehen, die jedes Objekt speichert, das Sie mit JSON darstellen können.
Sie können den Ruhezustand so konfigurieren, dass er ohne Entity-Klassen (mit Tabellen verknüpfte Beans) arbeitet.
1. Sie müssen hierfür die XML-Konfiguration verwenden. anstelle von class
verwenden Sie entity-name
und anstelle von <property name="something"
verwenden Sie <property node="something"
.
Sie können eine Karte verwenden, um Informationen von db zu speichern und zurückzuholen. Denken Sie daran, da Sie Map benutzen, wird es Schwierigkeiten beim 2-Wege-Mapping geben (das war ab 3.3, nicht sicher, ob es in späteren Releases behoben wurde)