Альтернативы DDLUtils от apache
Я хотел бы знать, какие существуют альтернативы для замены утилит DDL от Apache.
Я спрашиваю об этом, потому что проект ddlutils выглядит мертвым, а также он не поддерживает базы данных H2. Я искал это, и я нашел предложения, такие как жидкая база или пролетный путь.
Моя проблема: эти фреймворки запускаются при запуске проекта и меняют структуру БД на основе некоторых файлов XML. Они действительно предназначены для миграции баз данных.
То, что я хочу, - это структура для CREATE/ALTER Tables во время выполнения на высоком уровне абстракции, т.е. поддерживающая как минимум Mysql, Sqlserver, oracle и H2.
Например, я мог бы сказать движку, что я хочу создать таблицу с полем AGE с типом Number, и структура перефразировала бы:
create table MY( id bigint(20))
create table MY(id bigint)
create table MY (id, number)
в зависимости от базового двигателя БД.
Какие-либо предложения?
Я мог видеть, что есть патч для ddlutils, для поддержки H2. Однако я не смог исправить мой svn checkout...
Любая помощь будет оценена.
заранее спасибо rui
4 ответа
Я знаю, что это старая ветка, но хотел дать однозначный ответ.
Да, DdlUtils мертв, обновлений не видел уже 2 года.
Тем не менее, похоже, что ребята могли перейти на https://www.symmetricds.org/. Их репо - https://github.com/JumpMind/symmetric-ds.
Как только вы поцарапаете поверхность, вы обнаружите, что ядро DdlUtils все еще там (даже имеет некоторые старые уведомления об авторских правах Apache).
Изменились имена классов, изменились API, поэтому нет сопоставления 1: 1, но он получает регулярные обновления и включает поддержку H2 и других баз данных. Честно говоря, я бы предпочел получать эти вещи вместо сохранения старых API.
Вы не найдете руководство по использованию Symmetric DS так же, как старый документ DdlUtils, но в коде достаточно того, что вы сможете собрать его вместе.
Взгляните на jOOQ , он очень полезен при создании DDL (и DML тоже)
create.createTable("table")
.column("column1", INTEGER)
.column("column2", VARCHAR(10).nullable(false))
.constraints(
constraint("pk").primaryKey("column1"),
constraint("uk").unique("column2"),
constraint("fk").foreignKey("column2").references("some_other_table"),
constraint("ck").check(field(name("column2")).like("A%"))
)
.execute();
Это выглядит многообещающе: https://bitbucket.org/aragot/play-sql-dialects/src
По крайней мере, для начала.
Дизайнер ERD Mogwai может помочь, хотя формально он не поддерживает H2, но вы можете перевести H2 в режим совместимости с одной из поддерживаемых систем БД: https://sourceforge.net/p/mogwai