gpt4 book ai didi

hibernate - 将 liquibase 与 Spring JPA/Hibernate 一起使用的正确方法?

转载 作者:行者123 更新时间:2023-12-02 17:19:53 26 4
gpt4 key购买 nike

我有点困惑。我想将关系数据库(Postgres 或 MySQL)与 Spring JPA 一起使用。我喜欢注释、如何定义模型和它们之间的关系、连接和使用存储库。从我读到的内容来看,似乎不推荐使用 Hibernate 的自动 DDL 生成功能,应该将其禁用。这是有道理的,我想通过 liquibase 跟踪代码中的数据库更改,它更稳定。

现在是我难以理解的令人困惑的部分。我仍然可以使用 JPA 注释来定义 @OneToMany 或 @JoinColumn 之类的东西吗?这正是我通过 liquibase 中的变更集所做的事情。我们应该仍然使用注释,还是我们可以更愿意?

有人可以解释这个工作流程或指向概述结合使用 Liquibase 和 Spring Data JPA 的正确方法的文档吗?

最佳答案

使用 Liquibase 和注释不仅没问题,而且可能是最常见的用例。

注释的用途与 Liquibase 截然不同。它们描述了如何将 Java 代码片段映射到数据库模式。

Liquibase 创建并发展了这个数据库模式。

注解不包含有关不同版本架构的信息。这就是为什么您不应该将 Hibernates DDL 生成用于您的实际生产模式,尽管它在某种程度上可能适合开发和测试。当然,在某些时候,您应该使用完全按照为生产生成的模式生成的模式来测试您的应用。

Liquibase 没有关于应该如何完成从模式到 Java 对象的映射以及返回的信息。

当然,有重叠。如果你的注释说某个字段应该映射到表 t 中的列 x Liquibase 应该使用该列(以及 Hibernate 期望的类型)创建该表。

我通常这样做的方式是:

  1. 创建我的 Java 对象模型
  2. 使用 Hibernate 创建 DDL 脚本/架构。查看架构并调整映射,直到架构符合预期。
  3. 再次创建 DDL 并将其用作配置我的迁移工具(Liquibase 或其他)的基础。在此过程中针对与映射无关的事情再次调整脚本:约束和索引的名称、附加索引和约束、特权、存储选项。
  4. 确保有适当的测试来测试 Liquibase 迁移的基本 CRUD 操作。

当然,如果您从数据库模型入手,您的流程可能会大不相同。

关于hibernate - 将 liquibase 与 Spring JPA/Hibernate 一起使用的正确方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43660885/

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