任何等效于JPA/Hibernate(更像DML)但处于DDL级别的Java库/框架,例如CREATE TABLE、ALTER TABLE,适用于
- 在运行时动态生成DDL脚本
- 无字符串编码,如jOOQ或QueryDSL
- 处理中列出的数据库差异https://stackoverflow.com/a/217230/418439.
听起来你在寻找这样的东西:
- http://flywaydb.org/
- http://www.liquibase.org/
第一个有一个Java API,所以您可能更喜欢这样。
JOOQ库的作者推荐Liquibase(http://www.liquibase.org/)针对不同数据库上的可移植DDL抽象:http://blog.jooq.org/2011/10/24/liquibase-for-db-migrations/
关于第3)点,Liquibase还支持通用数据类型:
"为了帮助使脚本与数据库独立,以下"通用"数据类型将转换为正确的数据库实现:*BOOLEAN*CURRENCY*UUID*CLOB*BLOB*DATE*DATETIME*TIME*BIGINT
此外,指定java.sql.Types.*类型也将转换为正确的类型。如果需要,可以包括精度。以下是一些示例:*java.sql.Types.TIMESTAMP*java.sql.Types.VARCHAR(255)"
来源:http://www.liquibase.org/documentation/column.html