Reverse Engineering automatisch zur Laufzeit

mad-din

Bekanntes Mitglied
Hi Leute,

ist es möglich zur Laufzeit eines Javaprogramms eine Datenbank so zu analysieren, dass daraus POJOs generiert werden, mit denen man arbeiten? Konkret geht es um eine Weboberfläche in der man die Daten für eine Datenbankverbindung eingibt und danach eine Liste aller Tabellen und deren Abhängikeiten bekommen soll.

Da aber dann damit weiter gearbeitet werden soll, benötigt man natürlich die Javaklassen dafür. Für eclipse gibt es ja bereits ein Plugin von JBoss (Hibernate Tools) mit dem man sich die XML-Dateien generieren lassen kann. Das Problem ist natürlich - was mir spontan einfällt - die Kompilierung der Klassen.

Oder gibt es vielleicht einen anderen Weg mein Vorhaben zu lösen?

Danke & viele Grüße
Martin
 
S

SlaterB

Gast
du könntest javac manuell aufrufen, Runtime.exec() usw.
Eclipse macht das ja quasi auch während seiner Laufzeit..

wofür brauchst du aber die POJOs? wenn du die Klassen nicht vor dem Kompilieren kennst, hast du ja auch keinen Code der darauf direkt zugreift,
gibt es allgemeine Verarbeitung mit Reflection? wenn du fertige Tools dazu verwendest, dann muss es wohl sein,
bei eigenem Code vielleicht eher Listen von Datenfeldern usw.?
ein TableModel verwendet letzlich ja auch ein großes Array oder ähnliches, erstellt sich keine neue Klasse
 

mad-din

Bekanntes Mitglied
du könntest javac manuell aufrufen, Runtime.exec() usw.
Eclipse macht das ja quasi auch während seiner Laufzeit..

Wäre eine Option, müsste man mal darüber nachdenken.

wofür brauchst du aber die POJOs? wenn du die Klassen nicht vor dem Kompilieren kennst, hast du ja auch keinen Code der darauf direkt zugreift,

Für die weitere Verarbeitung. Es ist so ähnlich wie Reports erstellen, nur dass es keine Reports werden ;) Stell dir vor du hast eine Datenbank mit zwei Tabellen: Person und Adressen. Jeder Person ist dabei eine Adresse zugeordnet (nur eine, der Einfachheit halber). Mein Programm verbindet sich dann mit der Datenbank, analysiert das Schema und der Benutzer kann dann z.B. auswählen, dass die Person X mitsamt Adresse ausgegeben wird. Daher brauche ich entweder die POJOs, um die Relationen zu erhalten oder irgendeinen anderen Weg um an die Daten in den Relationen ranzukommen.
 
M

maki

Gast
Gibt doch Tools die aus einem DB Schema Pojos bauen können, allerdings nicht "on the fly"
 

mad-din

Bekanntes Mitglied
Gibt doch Tools die aus einem DB Schema Pojos bauen können, allerdings nicht "on the fly"

Da liegt auch das Problem. Die Nuzter des Programms sind Endanwender, die schon überfordert sind, wenn ein Link beim Darüberfahren nicht unterstrichen ist ;)

Das Programm ist eigentlich relativ simpel erklärt:

Benutzer gibt Datenbankdaten (Username, Passwort, etc. an) wählt ein paar Spalten mehrerer Tabellen und klickt auf "Los" und das Programm erzeugt anhand der ausgewählten Spalten eine Art Transformation der Daten. Soweit relativ simpel. Problem dabei ist allerdings, wenn der Benutzer eine Spalte auswählt, die über eine Relation in einer anderen Tabelle gesichert ist. Dann muss das Programm diese Beziehung erkennen können und anhand dessen die richtigen Daten erzeugen.

Dynamische Beans klingt relativ interessant, bleibt allerdings das Problem wie ich die Datenbank und die Relationen in diesen Beans abbilde. Irgendwie muss es ja gehen, weil Hibernate das gleiche für Eclipse anbietet.
 
M

maki

Gast
Da liegt auch das Problem. Die Nuzter des Programms sind Endanwender, die schon überfordert sind, wenn ein Link beim Darüberfahren nicht unterstrichen ist ;)

Das Programm ist eigentlich relativ simpel erklärt:

Benutzer gibt Datenbankdaten (Username, Passwort, etc. an) wählt ein paar Spalten mehrerer Tabellen und klickt auf "Los" und das Programm erzeugt anhand der ausgewählten Spalten eine Art Transformation der Daten. Soweit relativ simpel. Problem dabei ist allerdings, wenn der Benutzer eine Spalte auswählt, die über eine Relation in einer anderen Tabelle gesichert ist. Dann muss das Programm diese Beziehung erkennen können und anhand dessen die richtigen Daten erzeugen.

Dynamische Beans klingt relativ interessant, bleibt allerdings das Problem wie ich die Datenbank und die Relationen in diesen Beans abbilde. Irgendwie muss es ja gehen, weil Hibernate das gleiche für Eclipse anbietet.
Ein 4-Dimensionales Portal durch Raum & Zeit ist auch recht simpel erklärt, das heisst aber ciht das es simpel zu bauen wäre.

Du kannst doch mit der JDBC API schon viel über eine DB/Tabelle/Feld rausfinden, u.a. auch welche Felder Schlüssel sind usw.
 

Ähnliche Java Themen


Oben