Ich arbeite an einer Webanwendung. Wir verwenden Hibernate als ORM in unserem Projekt. Tatsächlich erstellt unsere Anwendung basierend auf der Benutzerauswahl dynamisch einige Tabellen. Der Benutzer kann den Tabellennamen und den Spaltennamen auswählen und dann Daten aus einer CSV-Datei importieren. Meine Frage ist also: Wie mappe ich diese dynamisch erzeugte Tabelle mit Hibernate- und Java-Objekten?Wie dynamisch erstellte Tabelle in Hibernate?
Antwort
Es kann dynamisch erfolgen, aber es ist etwas chaotisch:
Sie werden ändern müssen, um dynamisch Objekt Konfiguration des Hibernate vor Session gebaut wird. Wenn Sie Spring verwenden, können Sie dies durch Überschreiben der postProcessAnnotationConfiguration()
Methode von AnnotationSessionFactoryBean
; Ansonsten müssen Sie es nur mit Ihrem Konfigurationsobjekt ausführen, bevor Sie darauf buildSessionFactory()
aufrufen.
Wenn Sie dies ohne Neustart der Anwendung tun müssen, müssen Sie entweder Ihre SessionFactory neu erstellen (was bedeutet, dass Ihre Benutzer warten müssen, bis dies erledigt ist) oder eine separate SessionFactory-Instanz speziell für Ihre benutzerdefinierten Klassen verwenden ist fast unmöglich, wenn Ihre benutzerdefinierten Klassen auf Ihre integrierten Klassen verweisen müssen).
Sie können über configuration.getMappings()
auf Klassen-/Tabellenzuordnungen zugreifen. Sie müssen dann ein neues Tabellen-Mapping über Table API erstellen und es über addTable()
zur Konfiguration hinzufügen. Dasselbe muss mit PersistentClass getan werden, was eine Klassenzuordnung darstellt. Wenn Sie dieselbe Klasse zum Darstellen mehrerer Entitäten verwenden (z. B. mehrere Tabellen zuordnen), müssen Sie eindeutige Entitätsnamen für jede Entität verwenden. Sie müssen dies bei jedem Neustart der App durchführen (ändern Sie die Konfiguration).
Wie viele der Tabellen werden dynamisch erstellt? Sind die Tabellen ähnlich und ändern Sie nur den Namen der Datenbank? Hier
ist eine Diskussion über die Änderung der Tabellenname: http://www.experts-exchange.com/Programming/Languages/Java/J2EE/Frameworks/Spring/Q_24237099.html
Wenn Sie völlig eine neue Tabelle erstellen, können Sie einen Blick verwenden und nur direkte Menschen zu einer Ansicht?
Warum verwenden Sie Hibernate dafür, anstatt nur dynamisch Abfragen in JDBC zu erstellen?
Die Datenbanklösung - Sie können eine Ansicht erstellen und auf eine Tabelle oder eine andere verweisen (vorausgesetzt, die Struktur ist identisch).
CREATE VIEW HIBERNATE_NAME als SELECT * FROM TABLE_A
oder VIEW HIBERNATE_NAME als SELECT * FROM Table_B
CREATE würden Sie Ihre Anwendung benötigen nativen SQL (DDL) ausführen, jedoch diese sollte einfacher sein als Hibernate Hacks
- 1. eine dynamisch erstellte Tabelle beim Senden übergeben
- 2. Problem mit dynamisch erstellte Javascript-Tabelle
- 3. Dynamisch erstellte Verknüpfungsschaltfläche in C#
- 4. Dynamisch erstellte Steuerelemente in UpdatePanel?
- 5. Wie dynamisch erstellte Klasse in Realm retrive?
- 6. ASP.NET - Dynamisch erstellte Schaltfläche
- 7. doctest für dynamisch erstellte Objekte
- 8. Bootstrap-Tooltip dynamisch erstellte Schaltfläche
- 9. C# - Dynamisch erstellte Steuerelemente überlappend
- 10. Dynamisch erstellte Python-Dateien importieren
- 11. Dynamisch erstellte Div wird unsichtbar
- 12. CakePHP Zugriff auf dynamisch erstellte Tabellen?
- 13. Tabellenzeile in dynamisch erstellte Zeile verschieben?
- 14. Google App Engine - Dynamisch erstellte Vorlagen
- 15. Wie Entität in Hibernate dynamisch hinzufügen?
- 16. MySQL-Benutzer erstellte temporäre Tabelle ist voll
- 17. JQuery Mobile reaktive Tabelle funktioniert nicht für dynamisch erstellte Tabelle, auch nach der Aktualisierung
- 18. Wie identifiziert man dynamisch erstellte Fenster/Schaltflächen in wxpython?
- 19. Wie dynamisch erstellte Steuerelemente in asp.net entfernt werden
- 20. SQLAlchemy: reflect Tabelle in explizit erstellte Klasse
- 21. Dygraphs: updateOptions für dynamisch erstellte Diagramme
- 22. Graf Dynamisch erstellte HTML-Elemente mit jquery
- 23. Wann dynamisch erstellte Objekte freigegeben werden sollen
- 24. Dynamisch erstellte ASP.net-Seite SEO Friendly
- 25. Erstellen von Tabellen dynamisch in Hibernate-Umgebung
- 26. eine dynamisch erstellte Seite von Jquery
- 27. Reagieren auf dynamisch erstellte asynchrone Postback-Schaltflächen
- 28. ASP.NET dynamisch erstellte Steuerelemente und Postback
- 29. jQuery Autocomplete für dynamisch erstellte Eingaben
- 30. ASP.NET + jQuery + Dynamisch erstellte HyperLink-Steuerelemente
Ich stimme zu, die Verwendung von Hibernate für dieses Problem ist nicht korrekt. – sbidwai