# Dynamisch zur Laufzeit Datenbank erzeugen



## Psypsy (15. Jan 2013)

Moin 

ich bin dabei ein Projekt (Schule) zu planen und wollte mal nach euren Meinungen und Ideen fragen.


Also eingesetzt wird: 

Java
Spring
Hibernate

Die Idee des Projektes ist es Datenbanken dynamisch zur Laufzeit zu erstellen.

Es gibt also eine Hauptdatenbank (für User und andere Informationen zur Anwendung).

Dann soll man diese Anwendung erweitern könnnen und um die neuen Informationen sichern zu können soll für jede Erweiterung eine neue Datenbank erstellt werden.

Meine Idee dazu ist:

Mit Java und JDBC die Datenbank erstellen
Dann mit gleichen mitteln das Schema in der Datenbank erstellen.

Weiter habe ich aber nicht so wirklich den richtigen Weg.

Ich würde sagen Hibernate auf Create stellen und die neuen Tabellen erstellen lassen und dann das Create wieder deaktivieren.
(Die Erweiterungen müssen natürlich mit JPA / Hibernate Annotation sein).
Aber funktioniert das zur Laufzeit?

Und meine Hoffnung ist dabei das die Haupdatenbank nicht verändert wird bei der Hibernate aktion.

Was sind eure Meinungen oder Ideen dazu?

by

PsyPsy


----------



## Spacerat (17. Jan 2013)

Also ich kenne Hibernate nicht, weiss aber, dass es Datenbanken gibt (z.B. MySQL) wo man auf einzelne Datenbanken Rechte beliebig verteilen kann. Gesehen habe ich das bei PHPMyAdmin und MySQLDumper und wie es geht erfährt man entweder, wenn man diese beiden Programme analysiert oder es in anderweitiger Lektüre nachschlägt. Das Geheimnis liegt anscheinend in einer Tabelle, welche die User-Verwaltung darstellt und nur durch einen Controluser verändert werden kann.


----------



## thE_29 (17. Jan 2013)

Hibernate braucht ja eine Klassenabbildung von dem es was machen kann (ob man da jetzt Annotations oder Config-Files nutzt, ist ja egal).

Da diese Klassen aber eigentlich nicht existieren, ist es fraglich ob das mit Hibernate so leicht/gut lösbar ist oder ob man nicht gleich schneller ist, wenn man es selber macht.

Also immer mit PreparedStatements arbeiten und mit setObject(int index, Object o) und getObject(int index) kann man auch auf Tabellen zugreifen, ohne das man den Datentyp kennen muss.


----------

