Domanda

Qualcuno conosce una libreria Java che fornisce un'astrazione utile per analizzare e manipolare schemi arbitrari di database relazionali? Sto pensando a qualcosa che potrebbe fare cose come

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

e

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

o persino manipolare tabelle come

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

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

La maggior parte degli strumenti di modellazione del database avrà tale astrazione internamente, ma ce n'è uno in Java che posso usare o dovrò rotolare il mio?

È stato utile?

Soluzione

DdlUtils ha quello che stai cercando. È possibile leggere / scrivere schemi in / da XML (in formato Torque) o in un database live, o persino definire lo schema del database in Java puro. Meglio ancora, leggi il documento online, è abbastanza buono.

Altri suggerimenti

JDBC stesso ha una tale astrazione. Guarda java.sql.DatabaseMetaData. Tuttavia, questa è una parte facoltativa dello standard e dipende dal driver JDBC che stai utilizzando sia che sia implementato o meno.

Non lo uso da anni ma Hibernate aveva strumenti per manipolare i modelli di dati al momento della creazione. Hibernate ha anche i dialetti di nozione che sarebbero utili se si sta prendendo di mira più di un fornitore di database.

Quando ero in MetaMatrix, abbiamo creato una cosa del genere utilizzando EMF (Eclipse Modeling Framework) in cui abbiamo creato un meta-modello rappresentativo in UML, quindi generato dal codice. La cosa bella del metamodellaggio è che se lo fai bene, puoi interagire tra i vari metamodelli, a condizione che tu abbia fatto buone scelte contro il meta-meta-modello.

Avevamo anche un importatore che avrebbe importato metadati dall'API JDBC e creato gli oggetti del modello equivalente appropriato (database, tabella, colonna, chiavi, ecc.).

Questo codice potrebbe essere open source un giorno poiché sono stati acquistati da JBoss ma non credo che lo sia ancora.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top