16

我想知道有哪些替代方案可以替代 Apache 的 DDL 实用程序。

我问这个是因为 ddlutils 项目接缝是死的,而且它不支持 H2 数据库。我已经搜索过了,我发现了像 Liquidbase 或 flyway 这样的建议。

我的问题是:这些框架在项目启动时运行,并根据一些 XML 文件更改数据库结构。它们确实是为数据库迁移而设计的。

我想要的是一个在运行时以高抽象级别创建/更改表的框架,即至少支持 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 ......

任何帮助将不胜感激。

提前谢谢瑞

4

4 回答 4

4

我知道这是一个旧线程,但想给出一个明确的答案。

是的,DdlUtils 已经死了,2 年没有更新了。

但是,看起来这些人可能已经切换到https://www.symmetricds.org。他们的仓库是https://github.com/JumpMind/symmetric-ds

只要您从表面开始,就会发现 DdlUtils 的核心仍然存在(甚至还有一些旧的 Apache 版权声明)。

类名已更改,API 已更改,因此没有一对一的映射,但它会定期更新并包括 H2 和其他数据库支持。老实说,我宁愿得到这些东西,也不愿保留旧的 API。

您不会以与旧 DdlUtils 文档相同的方式找到有关使用 Symmetric DS 的指南,但代码中有足够的内容,您应该能够将其拼凑在一起。

于 2018-08-16T12:30:41.747 回答
1

看看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();
于 2021-04-02T07:52:00.937 回答
0

Mogwai ERD 设计师可能会有所帮助,尽管他们没有正式支持 H2,但您可以将 H2 置于与支持的数据库系统之一的兼容模式:https ://sourceforge.net/p/mogwai

于 2016-12-22T10:05:19.057 回答
0

这看起来很有希望:https://bitbucket.org/aragot/play-sql-dialects/src

至少作为一个开始。

于 2016-04-01T16:20:06.833 回答