我有点困惑。我想使用关系数据库(Postgres或MySQL)和Spring JPA。我喜欢注释,如何定义它们之间的模型和关系,连接和使用存储库。从我所看到的,似乎不建议使用Hibernate的自动DDL生成功能,应该禁用。这是有道理的,我想通过liquibase跟踪代码中的数据库更改,这更加稳定。
现在到了我难以理解的混乱部分。我还可以使用JPA Annotations来定义像@OneToMany或@JoinColumn这样的东西吗?这将通过liquibase中的更改集完成我正在做的事情。我们还应该使用注释吗,还是我们宁愿?
有人可以解释这个工作流程或指向文档,概述使用Liquibase,Spring Data JPA组合的正确方法吗?
它不仅可以,而且可能是使用Liquibase和注释的最常见用例。
注释与Liquibase有着截然不同的目的。它们描述了如何将Java代码片段映射到数据库模式。
Liquibase创建并发展此数据库模式。
注释不包含有关模式的不同版本的信息。这就是为什么您不应该将Hibernates DDL生成用于实际的生产模式,尽管它可能在某种程度上适用于开发和测试。当然,在某些时候,您应该使用完全按生成生成方式生成的模式测试您的应用程序。
Liquibase没有关于如何从模式到Java对象的映射以及返回的信息。
当然,有重叠。如果您的注释表示某个字段应该映射到表x
中的列t
,Liquibase应该使用该列创建该表(以及Hibernate期望的类型)。
我通常这样做的方式是:
当然,如果从数据库模型开始,您的过程可能看起来非常不同。