我的应用程序总是在开发,所以偶尔 - 当版本升级时 - 需要创建/更改/删除一些表,修改一些数据等。通常需要执行一些sql代码。
是否有可用于使我的数据库结构保持最新的Java库(通过分析类似“db structure version
”的信息并执行自定义sql代码来更新版本到另一个)?
使用最少的配置(即名称/类型和没有sql代码)准备使用一些基本操作(如添加/删除列)也会很棒。
答案 0 :(得分:3)
试试Liquibase。
Liquibase是一个开源的(Apache 2.0 Licensed),独立于数据库的库,用于跟踪,管理和管理 应用数据库更改。它是建成的 在一个简单的前提下:所有数据库 变化存储在人类可读的 但可追踪的形式,并检查 源控制。
支持的功能:
- 扩展
- 合并多个开发者的更改
- 代码分支
- 多个数据库
- 管理生产数据以及各种测试数据集
- 群集安全数据库升级
- 自动更新或生成可以批准的SQL脚本 由DBA提出
- 更新回滚
- 数据库“diff”s
- 从现有数据库生成启动更改日志
- 生成数据库更改文档
答案 1 :(得分:3)
试试DBDeploy。虽然我过去没有使用它,但听起来这个项目对你的情况有帮助。 DBDeploy是database refactoring manager that:
“自动化建立过程 需要哪些数据库重构 针对特定数据库运行 为了将其迁移到特定的 建“。
众所周知,它与Ant和Maven都集成在一起。
答案 2 :(得分:2)
我们使用一个名为Liquibase的软件。它非常灵活,您可以根据需要进行设置。我们将它与Maven集成,因此我们的数据库始终是最新的。
答案 3 :(得分:1)
您还可以查看Flyway(在SOW上标记的400个问题)或mybatis(标记了1049个问题)。要在比较中添加其他选项:Liquibase(标记为663个问题)和DBDeploy(标记了24个问题)。
您可以找到的另一个有用的资源是Flyway网站上的feature comparison(还有其他相关项目)。
答案 4 :(得分:0)
您应该查看OR Mapping库,例如Hibernate
答案 5 :(得分:0)
大多数ORM映射器都有逻辑为您进行架构升级,我已成功使用Hibernate,它至少可以自动获取基本内容。