Java 跨DBs编程表的创建/更改?
我正在开始一些针对Mysql和Oracle的新代码,以及用于内存测试的H2。然后,必须在客户的站点上部署此代码 由于它会随着时间的推移而发展,我计划使用它,但是我还没有发现任何java/jvm库允许我为所需的DBs声明/更改表并通过类型安全代码查询/插入它们 有图书馆这样做的迹象吗 到目前为止,我的调查:Java 跨DBs编程表的创建/更改?,java,sql,Java,Sql,我正在开始一些针对Mysql和Oracle的新代码,以及用于内存测试的H2。然后,必须在客户的站点上部署此代码 由于它会随着时间的推移而发展,我计划使用它,但是我还没有发现任何java/jvm库允许我为所需的DBs声明/更改表并通过类型安全代码查询/插入它们 有图书馆这样做的迹象吗 到目前为止,我的调查: Hibernate不支持迁移和编程创建/更改 表(仅启动时创建/更新选项,它们的数量要少得多 强大的) querydsl不支持表创建/更改 typesafe的slick需要oracle的付费
- Hibernate不支持迁移和编程创建/更改 表(仅启动时创建/更新选项,它们的数量要少得多 强大的)
- querydsl不支持表创建/更改
- typesafe的slick需要oracle的付费支持
最好的是,jooq的座右铭是通过DSL和跨数据库的方式在Java中提供所有SQL功能。非常好:)我认为这些类型的数据库创建任务不应该由Java运行时完成。它们应该是每个客户机设置的一部分,为每个数据库使用适当的脚本来完成。也许很不幸,但这是必须支持多个关系数据库的代价。好吧,我们已经使用flywaydb,每db迁移文件。这很耗时而且容易出错。。。因此,我的探索,呃,问题;)寻找一种方法来编写sql一次并使用它三次。检查Liquibase而不是Flyway。它的XML格式尽可能独立于DBMS。(虽然我认为使用与生产中不同的DBMS进行测试是一个非常糟糕的主意)实际上,我计划通过jOOQ编写sql:cross db,typesafe,write once在多个db上运行。一切都好。演示已在运行:)