Pergunta

Alguém sabe de uma biblioteca Java que fornece uma abstração útil para a análise e manipulação de esquemas de banco de dados relacional arbitrária? Estou pensando em algo que poderia fazer coisas como

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

e

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

ou até mesmo manipular tabelas como

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

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

A maioria das ferramentas de modelagem de banco de dados terá uma abstração tal internamente, mas há um em Java que eu possa usar, ou será que eu tenho que fazer a minha própria?

Foi útil?

Solução

DdlUtils tem o que você está procurando. Você pode ler / schemas gravação para / de XML (em formato binário) ou um banco de dados ao vivo, ou mesmo definir o esquema de banco de dados em Java puro. Melhor ainda, leia o doco on-line, é muito bom.

Outras dicas

JDBC em si tem como uma abstração. Olhe para java.sql.DatabaseMetaData. No entanto, esta é uma parte opcional do padrão e isso depende do driver JDBC que você está usando wether é implementado ou não.

Eu não tê-lo usado em anos, mas Hibernate costumava ter ferramentas para manipular modelos de dados em tempo de compilação. Hibernate também tem os dialetos noção que seria útil se você está alvejando mais de um fornecedor de banco de dados.

Quando eu estava na MetaMatrix, construímos uma coisa tão usando EMF (Eclipse Modeling Framework), onde criamos uma meta-modelo de representação em UML, então gerou a partir do código. A coisa agradável sobre metamodelagem é que se você fizer isso bem, você pode interoperar coisas através de metamodelos, desde que você tenha feito boas escolhas contra a meta-meta-modelo.

Também tivemos um importador que importar metadados a partir da API JDBC e criar as apropriadas objetos de modelo equivalentes (banco de dados, tabelas, colunas, chaves, etc.).

Este código pode ser de código aberto alguns dias desde que foi comprado pelo JBoss, mas eu não acho que é ainda.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top