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