gpt4 book ai didi

java - 使用 Flyway 和 Hibernate 的 hbm2ddl 在应用程序的生命周期中管理数据库模式

转载 作者:搜寻专家 更新时间:2023-10-30 20:27:34 26 4
gpt4 key购买 nike

我正在开发 Spring/Hibernate/MySql 应用程序。该应用程序尚未投入生产,我目前使用 Hibernate 的 hbm2ddl 功能,这对于管理域中的更改非常方便。我还打算使用 Flyway 进行数据库迁移。

在未来的某个时候,应用程序将首次投入生产,这引出了我的第一组问题:

  • 用于模式创建的最佳做法是什么(应用首次发布到生产环境中)?具体来说,我应该让 Hibernate 的 hbm2ddl 在生产数据库上创建模式,还是让 Flyway 使用 SQL 脚本创建第一个模式?如果第二个选项(即 Flyway)更可取,那么我应该从 hbm2ddl 创建的数据库生成 SQL 脚本吗?

然后假设我的应用程序的第一个版本在生产环境中运行,我打算使用 Hibernate 的 hbm2ddl 继续开发应用程序的第二个版本。

  • 我将如何管理对域的更改,尤其是计算数据库架构的第一版和第二版之间的差异,以便在第二版发布到生产环境期间迁移数据库?

最佳答案

最好的权衡是仅将 hbm2ddl 用于集成测试,将 Flyway 用于运行时,无论是 QA 测试还是生产环境。

您也可以使用 hbmddl 作为 Flyway 的第一个脚本的基础,但是每次更改 JPA 模型时,您都需要手动创建一个新的更新脚本,无论如何这并不困难。这也将允许使用数据库特定的功能。

由于集成测试和运行时使用不同的策略,因此必须编写一个系统集成测试来比较 hbmddl 和 Flyway 创建的模式。同样,这也不难,只需要确保您与实际生产数据库(不是内存中集成测试数据库)进行比较即可。

关于java - 使用 Flyway 和 Hibernate 的 hbm2ddl 在应用程序的生命周期中管理数据库模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24229529/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com