Frage

Kennt jemand eine Java-Bibliothek, die für die Analyse und Manipulation von beliebigen relationalen Datenbank-Schemata eine nützliche Abstraktion bietet? Ich denke an etwas, das Dinge wie

tun könnte
LibraryClass dbLib = ...;
DbSchema schema = dbLib.getSchema("my_schema");
List<DbTable> tables = schema.getTables();

und

DbTable myTable  = ...
for(DbColumn col : myTable.getColumns()){
    ... = col.getType();
}

oder sogar manipulieren Tabellen wie

myTable.addColumn(
    new DbColumn("my_new_column", Type.UNSIGNED_INTEGER);
);

DbColumn myColumn = ...
myTable.removeColumn(myColumn);

Die meisten Datenbank-Modellierungs-Tools haben eine solche Abstraktion intern, aber gibt es eine in Java, die ich verwenden kann, oder muss ich auf meine eigene Rolle?

War es hilfreich?

Lösung

DdlUtils hat das, was Sie suchen. Sie können Lese- / Schreibschemata zu / von XML (in Torque-Format) oder eine Live-Datenbank oder auch das Datenbankschema in reinem Java definieren. Noch besser wäre es, die on-line doco lesen, es ist ziemlich gut.

Andere Tipps

JDBC selbst hat eine solche Abstraktion. Schauen Sie sich java.sql.DatabaseMetaData. Dies ist jedoch ein optionaler Bestandteil des Standards und es hängt von der JDBC-Treiber Sie verwenden, ob es umgesetzt wird oder nicht.

Ich habe es seit Jahren nicht mehr verwendet, sondern Hibernate verwendet, um Tools zur Manipulation von Datenmodellen zum Zeitpunkt der Erstellung. Hibernate hat auch die Vorstellung, Dialekte, die hilfreich wäre, wenn Sie mehr als eine Datenbank-Anbieter Targeting sind.

Als ich bei MetaMatrix war, bauten wir eine solche Sache mit EMF (Eclipse Modeling Framework), wo wir eine repräsentative Metamodell in UML erstellt, dann erzeugt es aus dem Code. Die nette Sache über Metamodellierung ist, dass wenn Sie es gut tun, Sie Dinge über metamodels zusammenarbeiten können, vorausgesetzt, Sie haben eine gute Wahl gegen die Meta-Meta-Modell gemacht.

Wir hatten auch einen Importeur, die Metadaten aus dem JDBC-API importieren würde und die entsprechende Ersatzmodell Objekte (Datenbank, Tabelle, Spalte, Schlüssel usw.) erstellen.

Dieser Code könnte Open Source sein, ein Tag, da sie von JBoss gekauft hätten, aber ich glaube nicht, es ist noch.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top