Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java apache中DDLUtils的替代方案_Java_Database_Runtime_Ddl_Ddlutils - Fatal编程技术网

Java apache中DDLUtils的替代方案

Java apache中DDLUtils的替代方案,java,database,runtime,ddl,ddlutils,Java,Database,Runtime,Ddl,Ddlutils,我想知道有哪些替代方案可以取代Apache中的DDL UTIL 我这样问是因为ddlutils将接缝投影为死接缝,而且它不支持H2数据库。我已经搜索过了,我找到了像liquidbase或flyway这样的建议 我的问题是:这些框架在项目启动时运行,并基于一些XML文件更改数据库结构。它们实际上是为数据库迁移而设计的 我想要的是一个在运行时以高抽象级别创建/更改表的框架,即至少支持Mysql、Sqlserver、oracle和H2 例如,我可以告诉引擎,我想创建一个带有字段年龄和类型编号的表,框架

我想知道有哪些替代方案可以取代Apache中的DDL UTIL

我这样问是因为ddlutils将接缝投影为死接缝,而且它不支持H2数据库。我已经搜索过了,我找到了像liquidbase或flyway这样的建议

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

我想要的是一个在运行时以高抽象级别创建/更改表的框架,即至少支持Mysql、Sqlserver、oracle和H2

例如,我可以告诉引擎,我想创建一个带有字段年龄和类型编号的表,框架将重新表述为:

create table MY( id bigint(20))
create table MY(id bigint)
create table MY (id, number)
取决于基础数据库引擎

有什么建议吗

我可以看到ddlutils有一个补丁,它支持H2。但是,我无法修补我的svn签出

任何帮助都将不胜感激

提前谢谢
rui

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


至少作为一个开始。

Mogwai ERD designer可能会有所帮助,尽管他们不正式支持H2,但您可以将H2置于与受支持的DB系统之一的兼容模式:

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

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

然而,看起来这些人可能已经转向了。他们的回购协议是无效的

只要您仔细研究一下表面,就会发现DdlUtils的核心仍然存在(甚至还有一些旧的Apache版权声明)

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

您不会找到与旧的DdlUtils doco相同的使用对称DS的指南,但代码中有足够的内容,您应该能够将其拼凑在一起。

看看它在生成DDL(以及DML)时非常有用


你找到什么了吗?我也需要这个@Gabriebr你找到什么了吗?想知道一个关于这个的好的最新框架吗
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();