如何从hibernate汽车转向生产

时间:2017-04-28 06:50:24

标签: java mysql spring hibernate spring-data-jpa

我正在使用MySQL构建一个Spring Boot Web应用程序,直到现在我使用了

spring.jpa.hibernate.ddl-auto=create-drop

在我的属性文件中,现在我想转移到生产,我不能再使用这一行,因为你们都知道它将数据保存在内存中,最糟糕的是它会破坏所有数据并创建一个新表部署。

出于开发目的,它很精彩,但我接下来需要做的是因为我希望它的行为与我在ddl-auto上的行为完全相同,但是持续保存数据并且最重要的是永远不会丢弃数据。

P.S。 hibernate.ddl-auto与JPA Repository没有关系? 因为我使用Crud Repository很多,我需要这个继续使用Crud Repository,是吗?

2 个答案:

答案 0 :(得分:1)

根据我的说法,最好的办法是:

  • 使用选项spring.jpa.hibernate.ddl-auto=create-drop进行创建 数据库架构和开发环境中的默认数据(如果有)
  • 以正常DDL
  • 导出创建的数据库架构
  • 将DDL提供给DBA以检查是否必须进行任何改进(例如, 添加一些索引,查看一些FK等。)
  • 在DBA审核后适应JPA模型
  • 将最终的DDL提供给生产DBA"为了创造 生产环境中的最终正确模式

关于你的问题:

  

hibernate.ddl-auto与JPA Repository没有关系?原因   我使用Crud Repository很多,我需要这个继续使用   Crud Repository,好吗?

您当然可以使用crud存储库;此选项不会影响您的业务逻辑

我希望它有用

安吉洛

答案 1 :(得分:0)

你不想发送DDL。您将最终尝试为脚本创建版本控制系统,通过专门命名它们或将它们放在文件夹中,您将很难与DBA通信,脚本崩溃..

您希望数据库定义代码成为代码库的一部分,以便将其置于版本控制之下(是的,git)。

尝试使用Liquibase。它将帮助您自动更新架构,数据,数据库相关的所有内容,并且它知道如何将应用程序的数据库(例如,从1.1升级到1.2)以及从1.1升级到1.6。还有像Flyway这样的其他数据库迁移工具,你可以查看它们并进行游戏。