我们什么时候应该使用liquibase?

When we should use liquibase?

我在很多网站上搜索过这个答案,到处都得到几乎相同的答案。

这也可以通过使用 Jpa 来完成(对暂存、开发、生产使用不同的属性文件)。那么我们什么时候应该使用liquibase,什么时候需要它呢?

Liquibase 和 JPA 非常不同并且有完全不同的用例。

Liquibase 是一个用于自动跟踪、管理和应用数据库架构更改的库。 Liquibase 帮助跟踪您自己文件中的所有数据库架构更改(sql、xml、yml、json)。您可以将 liquibase 视为数据库脚本的版本控制工具。

假设有人将新数据插入到 table 中,但是,当应该对所有环境都这样做时,只对一个环境这样做了。现在更糟糕的情况是有人离开了他们的公司,现在没有人知道他们丢失了数据。这是一个完美的例子,说明在管理多个数据库或多个模式时,由于粗心大意的错误,你如何随着时间的推移失去一致性。有了 liquibase,他们就不必担心,因为数据库更改现在已正确保存,并且会针对该代码部署到的每个环境执行。本质上,您的 liquibase 脚本现在在某种程度上是您项目代码的一部分(当然取决于它们所在的位置)。

另一方面,JPA 可以根据您的数据库验证您现有的代码库,但是,它不会为您进行必要的数据库更改(除非您指定像 create-drop 这样的东西,我不建议大多数人使用它个案)。每当您使用他们的任何注释(例如 @Entity@Table@Id@Blob 等时,这些更改中的 none 会自动应用到您的数据库. JPA 非常适合对您的 table、关系和约束在数据库中的外观进行建模。但是,通常由您为此类更改执行必要的 SQL(或其他查询语言)。这就是 liquibase 可以方便地为您处理的地方。