配置数据库开发环境以及 Hibernate 和 Spring
Configuring database development environment along with Hibernate and Spring
我们在开发阶段有一个基于 Web 的应用程序,我们使用 Spring 5、JPA(Hibernate) 和 Postgresql 9.4
到目前为止,我们一直在使用 posgresql 数据库的一个实例进行工作。基本上,我们没有任何模式生成脚本,如果我们需要一些新的 table、列等,我们只是更新数据库。对于 Hibernate,我们从数据库生成 classes。
现在当我们有一些测试数据时,数据库中的每次更改都会带来很多麻烦和混乱。我们意识到我们需要创建并开始维护一些模式生成文件以及一些生成测试数据的脚本。
经过一些研究,我们看到了两个选项
创建两个 *.sql 文件。第一个将包含模式生成脚本,第二个 SQL 用于创建测试数据。然后添加一个带有 class 的小模块,它将使用纯 jdbc 执行 *.sql 文件。基本上,我们将继续开发,每当我们进行一些更改时,我们都会快速擦除->创建->填充数据库。在这一点上,这种方法看起来对我们最有吸引力。它快速、简单、强大。
其次是设置一些可能对此有所帮助的工具,例如Liquibase
这种方法在版本控制和其他功能方面看起来也不错。但是,我们还没有投入生产,我们正处于积极的开发阶段。我们没有太多进行数据库更改的开发人员,我们不确定在生产中更新数据库模式的频率,这可能很少见。
问题如下。第一种方法是否是一种不好的做法,应用第二种方法会带来最大的好处并且值得使用它吗?
如有任何意见或任何其他建议,我们将不胜感激!
我会建议第二种方法,因为它会在您添加并在启动时执行脚本时自动找到新脚本。此外,当您拥有 liquibase
和 flyway
等可用工具时,为什么要重新发明轮子?
第二种方法也将减少手动执行 *.sql 文件的不必要代码。此外,此代码还需要测试,如果更新可能容易出错。
此外,您编写手动代码来执行脚本的第一种方法还必须检查需要执行哪些脚本。如果您已经拥有现有数据库并且要添加一些新脚本,则只需执行这些新脚本。第二种方法会自动处理这些事情,您无需担心已经执行的脚本再次执行
希望这能解决您的问题。快乐编码
在这一代之前,第一种方法并不是一个坏习惯。但它会考虑像 Liquibase 这样的工具的增长。
如果您处于开发阶段的早期或中期,请继续使用 LiquiBase 以及 Spring 数据。相反,在开发阶段的最后阶段,认为你真正需要它。
我们在开发阶段有一个基于 Web 的应用程序,我们使用 Spring 5、JPA(Hibernate) 和 Postgresql 9.4
到目前为止,我们一直在使用 posgresql 数据库的一个实例进行工作。基本上,我们没有任何模式生成脚本,如果我们需要一些新的 table、列等,我们只是更新数据库。对于 Hibernate,我们从数据库生成 classes。
现在当我们有一些测试数据时,数据库中的每次更改都会带来很多麻烦和混乱。我们意识到我们需要创建并开始维护一些模式生成文件以及一些生成测试数据的脚本。
经过一些研究,我们看到了两个选项
创建两个 *.sql 文件。第一个将包含模式生成脚本,第二个 SQL 用于创建测试数据。然后添加一个带有 class 的小模块,它将使用纯 jdbc 执行 *.sql 文件。基本上,我们将继续开发,每当我们进行一些更改时,我们都会快速擦除->创建->填充数据库。在这一点上,这种方法看起来对我们最有吸引力。它快速、简单、强大。
其次是设置一些可能对此有所帮助的工具,例如Liquibase 这种方法在版本控制和其他功能方面看起来也不错。但是,我们还没有投入生产,我们正处于积极的开发阶段。我们没有太多进行数据库更改的开发人员,我们不确定在生产中更新数据库模式的频率,这可能很少见。
问题如下。第一种方法是否是一种不好的做法,应用第二种方法会带来最大的好处并且值得使用它吗?
如有任何意见或任何其他建议,我们将不胜感激!
我会建议第二种方法,因为它会在您添加并在启动时执行脚本时自动找到新脚本。此外,当您拥有 liquibase
和 flyway
等可用工具时,为什么要重新发明轮子?
第二种方法也将减少手动执行 *.sql 文件的不必要代码。此外,此代码还需要测试,如果更新可能容易出错。
此外,您编写手动代码来执行脚本的第一种方法还必须检查需要执行哪些脚本。如果您已经拥有现有数据库并且要添加一些新脚本,则只需执行这些新脚本。第二种方法会自动处理这些事情,您无需担心已经执行的脚本再次执行
希望这能解决您的问题。快乐编码
在这一代之前,第一种方法并不是一个坏习惯。但它会考虑像 Liquibase 这样的工具的增长。
如果您处于开发阶段的早期或中期,请继续使用 LiquiBase 以及 Spring 数据。相反,在开发阶段的最后阶段,认为你真正需要它。