Pregunta

¿Alguien sabe de una biblioteca Java que proporcione una abstracción útil para analizar y manipular esquemas arbitrarios de bases de datos relacionales? Estoy pensando en algo que podría hacer cosas como

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

y

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

o incluso manipular tablas como

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

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

La mayoría de las herramientas de modelado de bases de datos tendrán tal abstracción internamente, pero ¿hay alguna en Java que pueda usar, o tendré que rodar la mía?

¿Fue útil?

Solución

DdlUtils tiene lo que está buscando. Puede leer / escribir esquemas en / desde XML (en formato Torque) o una base de datos en vivo, o incluso definir el esquema de la base de datos en Java puro. Mejor aún, lea el documento en línea, es bastante bueno.

Otros consejos

JDBC en sí tiene tal abstracción. Mire java.sql.DatabaseMetaData. Sin embargo, esta es una parte opcional del estándar y depende del controlador JDBC que esté utilizando si está implementado o no.

No lo he usado en años, pero Hibernate solía tener herramientas para manipular modelos de datos en tiempo de construcción. Hibernate también tiene los dialectos de nociones que serían útiles si se dirige a más de un proveedor de bases de datos.

Cuando estaba en MetaMatrix, creamos tal cosa usando EMF (Eclipse Modeling Framework) donde creamos un metamodelo representativo en UML, luego lo generamos a partir del código. Lo bueno del metamodelado es que si lo haces bien, puedes interoperar entre metamodelos, siempre que hayas hecho buenas elecciones contra el metamodelo.

También teníamos un importador que importaría metadatos de la API JDBC y crearía los objetos de modelo equivalentes apropiados (base de datos, tabla, columna, claves, etc.).

Este código podría ser de código abierto algún día desde que fue comprado por JBoss, pero no creo que lo sea todavía.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top