2008-11-14 8 views
5

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

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 las tablas como

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

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

mayoría de las herramientas de modelado de base de datos tendrá una abstracción tal manera interna, pero ¿Hay alguno en Java que pueda usar, o tendré que hacer el mío?

Respuesta

4

DdlUtils tiene lo que estás buscando. Puede leer/escribir esquemas a/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 doco en línea, es bastante bueno.

0

No lo he usado en años, pero Hibernate solía tener tools for manipulating data models en tiempo de compilació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.

+0

Hasta donde yo sé, Hibernate solo incluye una herramienta para generar DDL a partir de archivos de mapeo existentes. Esto desafortunadamente no ayudará en mi caso. ¿Es esto lo que quisiste decir, o hay algo más? Gracias! – Henning

5

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

+0

Estoy usando MySQL Connector 3.1.10, que implementa java.sql.DatabaseMetaData. Esto va a ser muy útil en lo que respecta a recopilar y mostrar información de la tabla. ¡Gracias! – Henning

0

Cuando estaba en MetaMatrix, creamos algo así usando EMF (Eclipse Modeling Framework) donde creamos un metamodelo representativo en UML, y luego lo generamos a partir del código. Lo bueno del metamodelado es que, si lo haces bien, puedes interoperar entre sí a través de metamodelos, siempre que hayas tomado buenas decisiones frente al meta-metamodelo.

También teníamos un importador que importaría metadatos de la API de 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 fueron comprados por JBoss, pero no creo que todavía esté abierto.

Cuestiones relacionadas