Hibernate Tabellen anlegen

Status
Nicht offen für weitere Antworten.

MQue

Top Contributor
Hallo,

wenn man hibernate konfiguriert, dann benötigt man eine "hibernate.cfg.xml" und dann noch je eine "*.hbm.xml" pro Tabelle welche man anlegen möchte.

So weit so gut, das klappt bei mir auch alles.
Nun habe ich den Auftrag, wenn der Server schon gestartet ist und wenn bestimmte Eingaben von einem Frontend am Server empfangen wurden, neue Tabellen je nach Eingabe zu erzeugen -> quasi per Software das machen, was man normal deklarativ macht.
Da liegt jetzt mein Problem, funktioniert das bzw. wie kann man das machen?
Hab schon gegoogelt aber nichts passendes gefunden, weiß aber auch nicht so recht ob meine Suchbegriffe richtig waren.


Vielen Dank,
lg
 

mr-gurke

Mitglied
Bei dem Problem habe ich auch schon länger überlegt.
Ich hatte das Glück, meinem Chef ausreden zu können, dass neue Entities im laufenden Betrieb erstellt werden können.

Das Einzige, das mir eingefallen ist, war über Reflection die Klassen zu erzeugen und "manuell" per JDBC die entsprechende Tabelle in der Datenbank anzulegen. (Tabellen werden ja nur beim Deployen angelegt)
Großer Nachteil der Methode ist aber, dass die Klassen beim nächsten Deployment wieder weg sind.

Anderer Ansatz wäre, die neuangelegten Dinge über JDBC manuell zu lösen.
 

JanHH

Top Contributor
Wenn so ein Fall vorliegt tippe ich stark darauf dass das zugrundeliegende Design einen Denkfehler hat. Eigentlich sollte es möglich sein, ein Datenbankschema für eine Applikation zu entwerfen, an dem sich dann während des laufenden Betriebes nichts mehr ändert.
 

MQue

Top Contributor
Wenn so ein Fall vorliegt tippe ich stark darauf dass das zugrundeliegende Design einen Denkfehler hat. Eigentlich sollte es möglich sein, ein Datenbankschema für eine Applikation zu entwerfen, an dem sich dann während des laufenden Betriebes nichts mehr ändert.

Ja, ist schon klar, das man normalerweise das Schema designed und auf diesem Schema dann die Applikation aufbaut und nicht die Applikation das Schema erzeugt,
in meinem Fall ist die Sache ein bisschen anders gelagert - wie ich schon öfter geschrieben habe - der Zuständige für das Design hat fast keine Ahnung, wie man eine Web- Anwendung aufbaut und reimt sich das so aus dem Stehgreif zusammen. Ich habs immer wieder versucht, so weit es mir möglich ist, ihn in die richtige Richtung zu leiten, mit eher bescheidenem Erfolg.

Aber grundsätzlich gebe ich dir recht, auch wenn ich vor kurzem einen Test bzgl. der Zugriffszeiten auf Tuples gemacht habe,

1. 1 Mio Datensätze aus einer Tabelle holen, wo nur zusammengehörende Datensätze drinn sind (also alle Datensätze vom gleichen Typ) oder
2. 1 Mio Datensätze aus einer Tabelle holen, wo verschiedene Datensätze drinnen sind.

1. ist um den Faktor 2-4 schneller als 2. bei einer Firebird- Datenbank.

lg
 

JanHH

Top Contributor
Verstehe nicht den Unterschied zwischen den beiden von Dir getesteten Varianten. In einer Tabelle sind doch immer unterschiedliche Datensätze!?

Und ansonsten.. vielleicht hast Du auch noch nicht lange genug über das Datenbankdesign nachgedacht. Es gibt mit ziemlicher Sicherheit irgendeine Variante, die Deinen Anwendungsfall performant abdeckt.
 

ARadauer

Top Contributor
wenn der Server schon gestartet ist und wenn bestimmte Eingaben von einem Frontend am Server empfangen wurden, neue Tabellen je nach Eingabe zu erzeugen
sicher? Wie schaut genau der Business Case dahinter aus? So sollte normalerweise nicht gearbeitet werden...
 
S

SlaterB

Gast
bei Hibernate sind in den Mappings konkrete Klassennamen angegeben und diese müssen beim ersten Zugriff vorhanden sein,
was sollte es bringen, dynamisch beliebige Tabellen anzulegen, wenn das Mapping eh nicht geändert werden kann?

und selbst wenn, wozu braucht man die neuen Tabellen in Hinsicht auf Hibernate?
Hibernate macht doch nur Sinn, wenn man es auch im Quellcode benutzt, wenn man eine Tabelle PERSON_TABLE hat, eine Java-Klasse Person
und 10 Business-Methoden mit HQL 'Select p.name from Person p'

dynamisch angelegte Tabellen machen mit Hibernate zusammen keinen Sinn,
es gibt allerhöchstens Tools, die quasi vor Programmstart einmalig die gemappten Klassen analyisieren und daraus initial eine Datenbank erstellen

http://www.myeclipseide.com/PNphpBB2-viewtopic-t-18641.html
 

rhirt

Mitglied
Dafür scheint JPA nicht geeignet zu sein. Aber ich habe so etwas schon mal mit einer Objektorientierten Datenbank gemacht (db4o). Klassen habe ich als Groovy Dateien definiert und zu Laufzeit geladen ... Das hat gut funktioniert. db4o hat sogar erkannt, wenn eine Klasse geändert wurde und hat die bereits gespeicherten Objekte einfach angepasst.

liebe Grüsse
 

Dimarzio

Mitglied
rein theoretisch funktioniert das schon, indem man einfach in hibernate.cfg.xml folgende Option hinzufügt:
[XML]<property name="hibernate.hbm2ddl.auto">create</property>[/XML]

Das macht man aber nur ein eiziges Mal, und zwar bei der Schemainitialisierung. Danach sollte diese Option einfach verschwinden...

Die Möglichkeit Tabellen dynamisch zu erzeugen wundert mich ehrlich gesagt... Kann mir jemand verraten, was für ein Sinn dahinter steckt ? Persistenz heißt eingentlich, dass die Sachen persistent sein müssen...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Hibernate Problem bei Master-Detail-Tabellen Data Tier 5
S Tabellen mit Hibernate auslesen Data Tier 4
pusteblume Hibernate: Abfrage über 2 Tabellen Data Tier 2
T Hibernate/Spring JPA: eigene ID generieren Data Tier 5
Avalon @ManyToOne Hibernate oder JPA? Data Tier 5
D Hibernate Hibernate mit MariaDB Data Tier 1
ToBJo Hibernate Glassfish deploy mit Hibernate schlägt fehl Data Tier 1
C JPA Hibernate Map<String,String> richtig mappen Data Tier 2
S JPA Hibernate Search & EclipseLink (oder OpenJPA) Data Tier 0
R JPA Probleme mit Wechsel von EclipseLink auf Hibernate Data Tier 4
ARadauer Hibernate Entität readonly laden... Data Tier 1
G Hibernate SQL in Hibernate: Keine Parameter mit Index? Data Tier 2
P Wildfly + Hibernate + SQL Server Data Tier 0
E JPA Hibernate Query mit Timestamp hat seltsames Verhalten Data Tier 1
M Eclipse 4 RCP Hibernate Problem Data Tier 3
C Hibernate ProgressBar updaten mit Daten aus Hibernate Data Tier 4
B Hibernate und MySQL testen Data Tier 8
I Hibernate HQL: generiertes SQL ausgeben Data Tier 1
R mapping-file für hibernate zum Überschreiben der Annotationen Data Tier 7
R Hibernate Hibernate und Logback Data Tier 2
R Hibernate möchte Schema zwei mal undeployen Data Tier 2
F Hibernate Hibernate / JPA Data Tier 4
E Hibernate: Session vs EntityManager Data Tier 3
C Hibernate Hibernate Code Generation Data Tier 3
S Hibernate Mehrfachverbindung mit Hibernate Data Tier 3
M Hibernate Einstiegsfrage Data Tier 5
M Exception in thread "main" org.hibernate.MappingException: java.lang.ClassNotFoundException: Message Data Tier 4
S Hibernate Einstieg in Hibernate 3.2 sinnvoll? Data Tier 8
P JPA Eigene Vererbungsstrategie mit JPA / Hibernate Data Tier 2
Y Jboss seam-hibernate-jpa Data Tier 5
RaoulDuke Hibernate Map<String,String> mit Annotations mappen Data Tier 2
M Hibernate Hibernate with GWT Data Tier 4
C Hibernate JPA mysql db erstellen Data Tier 4
M Hibernate Hibernate liest Daten zu oft aus! Data Tier 16
pg1337 Hibernate Fragen Data Tier 11
D Probleme bei Left Joins mit Hibernate createCriterias() Data Tier 2
D Hibernate probleme mit Verlinkungstabelle Data Tier 4
2 Hibernate Annotations Data Tier 7
G Hibernate select update no wait Data Tier 8
Z Hibernate: Many-To-Many nur eine bestimmte Spalte Data Tier 3
K Hibernate - Envers - Erzeugung der SQL Skripte Data Tier 4
G Hibernate 1:n Beziehung mit Vererbung Data Tier 5
D Hibernate-Criteria-API (Projections und MAX-Funktion) Data Tier 6
L Hibernate: failed to lazily initialize a collection of role Data Tier 3
S Hibernate hibernate.cfg.xml Data Tier 14
D JPA vs Hibernate.cfg und Entitymanager Data Tier 6
H Hibernate - Mapping für Enumeration Data Tier 1
R Hibernate Criteria Abfrageproblem Data Tier 2
A Hibernate und jdbc zusammen Data Tier 4
D Mit Hibernate aus JUnit ein DB-Schema erzeugen Data Tier 6
S [Hibernate] No Persistence provider for EntityManager Data Tier 5
B Problem mit org.hibernate.LazyInitializationException Data Tier 11
G Hibernate HQL und Interface Data Tier 4
G JSF Hibernate no session or session was closed Data Tier 12
T JPA2/Hibernate: Many-to-Many-Relation wird u.a. beim löschen nicht aktualisiert Data Tier 14
S (Hibernate) Mapping einer Datenbanktabelle mit mehreren Fremdschlüssel Data Tier 7
X [Hibernate] Zusammengesetzte Entities möglich? Data Tier 7
N Hibernate Fake? Data Tier 2
S Problem beim Insert mit Hibernate Data Tier 9
V Hibernate Projection Data Tier 2
T org.hibernate.impl.SessionFactoryImpl Memory Leak Data Tier 10
G Hibernate Composite key Data Tier 11
X [Hibernate] Connection Pool - MinSize ? Data Tier 2
R Hibernate Criteria OR Data Tier 2
T hibernate/jpa abgefragte Listen immer mit Null-Werten gefüllt Data Tier 8
X [Hibernate] Anderen Connection Pool - Vorschläge? Data Tier 3
ARadauer Hibernate DDL Loggen Data Tier 6
G Hibernate abfrage Collection Data Tier 3
X [Hibernate] ReverseEngineering - Eigene Strategy verwenden? Data Tier 3
R Hibernate Criteria .group größer als Data Tier 5
R Hibernate daten laden Data Tier 7
H [Hibernate]1:1 Beziehung Data Tier 8
H [Hibernate]No CurrentSessionContext configured! Data Tier 6
X [Hibernate] Lässt sich die Dauer eines SELECTs loggen? Data Tier 4
R Hibernate n:n Relationtabelle mit Date Data Tier 3
H [Hibernate] Unknown Entity Data Tier 3
H [Hibernate] Configuration Data Tier 3
C [Hibernate] Generierung von hbm.xml to Java Data Tier 4
lumo Eclipse & JPA & Hibernate & Derby Data Tier 5
J Zufallsauswahl aus ResultList bei JPA(Hibernate) / Performance Data Tier 3
M Hibernate: Datum 0001-01-01 erzeugt null-Datum Data Tier 4
G Datenbankzugriff mit Hibernate Data Tier 7
Y Hibernate - Angabe des Schemas Data Tier 6
LadyMilka (Hibernate) in Criteria implizierter Join durch Subquery's Data Tier 8
M Hibernate Mehr als 1 Object speichern? Data Tier 18
M Unerklärliche Hibernate Exception Data Tier 20
LadyMilka (Hibernate) subquery in FROM-Clause Data Tier 9
haemi Viele DTOs in hibernate IdentityMap Data Tier 3
LadyMilka (hibernate) UNION dem Dialekt hinzufügen Data Tier 3
M Hibernate + Oracle 10g XE Data Tier 3
lumo Hibernate - entity class not found Data Tier 5
P SQL PRoblem Hibernate? Data Tier 8
J Vererbung mit JPA / Hibernate - pro/contra Data Tier 3
T JBoss/Hibernate: Abfrage dauert lang + hohe CPU? Data Tier 19
7 Hibernate-Abfrage (SubSelect im FROM) Data Tier 2
G Hibernate: many-to-one - Verwaiste Datensätze löschen Data Tier 2
G Layer für Datenbankzugriff Hibernate Data Tier 5
G Hibernate Zwischentabelle Data Tier 2
Java.getSkill() Hibernate und Spalte vom Typ xml Data Tier 6
G Hibernate 0...1 : 1 Beziehung Data Tier 6

Ähnliche Java Themen

Neue Themen


Oben