Есть ли библиотека моделирования баз данных для Java? - PullRequest
5 голосов
/ 14 ноября 2008

Кто-нибудь знает библиотеку Java, которая предоставляет полезную абстракцию для анализа и манипулирования произвольными схемами реляционных баз данных? Я думаю о том, что может сделать такие вещи, как

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

и

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

или даже манипулировать таблицами, такими как

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

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

Большинство инструментов моделирования баз данных имеют такую ​​внутреннюю абстракцию, но есть ли в Java такая, которую я могу использовать, или мне придется свернуть свою собственную?

Ответы [ 4 ]

5 голосов
/ 14 ноября 2008

В самой JDBC есть такая абстракция. Посмотрите на java.sql.DatabaseMetaData. Однако это необязательная часть стандарта, и она зависит от того, какой драйвер JDBC вы используете, независимо от того, реализован он или нет.

4 голосов
/ 12 июня 2009

DdlUtils имеет то, что вы ищете. Вы можете читать / записывать схемы в / из XML (в формате Torque) или действующей базы данных, или даже определить схему базы данных в чистом Java. А еще лучше, читайте онлайн-документацию, это неплохо.

0 голосов
/ 15 ноября 2008

Когда я работал в MetaMatrix, мы создавали такую ​​вещь, используя EMF (Eclipse Modeling Framework), где мы создали репрезентативную метамодель в UML, а затем сгенерировали ее из кода. Хорошая вещь о метамоделировании заключается в том, что если вы делаете это хорошо, вы можете взаимодействовать между метамоделями при условии, что вы сделали правильный выбор в отношении метамета-модели.

У нас также был импортер, который импортировал метаданные из JDBC API и создал соответствующие эквивалентные объекты модели (база данных, таблица, столбец, ключи и т. Д.).

Этот код может быть с открытым исходным кодом однажды, так как он был куплен JBoss, но я не думаю, что это пока.

0 голосов
/ 14 ноября 2008

Я не использовал его годами, но Hibernate имел инструменты для манипулирования моделями данных во время сборки. У Hibernate также есть диалекты понятий, которые были бы полезны, если вы нацелены более чем на одного поставщика баз данных.

...