Альтернативы 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

Другие вопросы по тегам