Question

Est-ce que quelqu'un connaît une bibliothèque Java qui fournit une abstraction utile pour analyser et manipuler des schémas de bases de données relationnelles arbitraires? Je pense à quelque chose qui pourrait faire des choses comme

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

et

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

ou même manipuler des tables comme

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

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

La plupart des outils de modélisation de base de données auront une telle abstraction en interne, mais est-ce qu'il y en a un en Java que je peux utiliser, ou devrai-je rouler moi-même?

Était-ce utile?

La solution

DdlUtils a ce que vous recherchez. Vous pouvez lire / écrire des schémas vers / depuis XML (au format Torque) ou une base de données active, ou même définir le schéma de base de données en Java pur. Mieux encore, lisez le doco en ligne, c’est plutôt bon.

Autres conseils

JDBC lui-même a une telle abstraction. Regardez java.sql.DatabaseMetaData. Cependant, il s’agit d’une partie optionnelle de la norme qui dépend du pilote JDBC que vous utilisez, qu’elle soit mise en œuvre ou non.

Je ne l'utilise plus depuis des années, mais Hibernate possédait des outils de manipulation de modèles de données au moment de la construction. Hibernate a également la notion de dialectes qui serait utile si vous ciblez plus d'un fournisseur de base de données.

Quand j'étais chez MetaMatrix, nous avons construit une telle chose en utilisant EMF (Eclipse Modeling Framework) où nous avons créé un méta-modèle de représentation en UML, puis généré à partir de code. La bonne chose à propos du métamodèle est que si vous le faites bien, vous pouvez interagir entre les métamodèles, à condition que vous ayez fait de bons choix contre le méta-méta-modèle.

Nous avions également un importateur qui importait des métadonnées à partir de l'API JDBC et créait les objets de modèle équivalents appropriés (base de données, table, colonne, clés, etc.).

Ce code sera peut-être un jour open source car JBoss l’a acheté, mais je ne pense pas que ce soit le cas.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top