Java 如何从hibernate自动转移到生产
我正在用MySQL构建一个SpringBootWeb应用程序,直到现在我都使用Java 如何从hibernate自动转移到生产,java,mysql,spring,hibernate,spring-data-jpa,Java,Mysql,Spring,Hibernate,Spring Data Jpa,我正在用MySQL构建一个SpringBootWeb应用程序,直到现在我都使用 spring.jpa.hibernate.ddl-auto=create-drop 在我的属性文件中,现在我想转到生产,我不能再使用这一行了,因为大家都知道它会将数据保存在内存中,最糟糕的是每次部署都会销毁所有数据并创建一个新表 对于开发人员来说,这很好,但我接下来需要做的是,因为我希望它的行为与我在ddl auto上的行为完全相同,但要持久保存数据,最重要的是永远不要删除数据 另外,hibernate.ddl-a
spring.jpa.hibernate.ddl-auto=create-drop
在我的属性文件中,现在我想转到生产,我不能再使用这一行了,因为大家都知道它会将数据保存在内存中,最糟糕的是每次部署都会销毁所有数据并创建一个新表
对于开发人员来说,这很好,但我接下来需要做的是,因为我希望它的行为与我在ddl auto上的行为完全相同,但要持久保存数据,最重要的是永远不要删除数据
另外,hibernate.ddl-auto与JPA存储库无关?
因为我经常使用Crud存储库,我需要它来继续使用Crud存储库,对吗?根据我的说法,最好的做法是:
- 使用选项
创建 开发环境中的DB模式和默认数据(如果有)spring.jpa.hibernate.ddl auto=create drop
- 在普通DDL中导出创建的DB架构
- 将DDL交给DBA,以检查是否必须进行任何改进(例如。 添加一些索引,查看一些FK等)
- 在DBA审查后调整JPA模型
- 为“生产DBA”提供最终DDL,以便创建 生产环境中的最终正确模式也是如此
Angelo您不想到处发送DDL。您将试图为您的脚本发明版本控制系统,具体命名它们或将它们放在文件夹中,您将难以与DBA通信,脚本将被破坏 您希望数据库定义代码成为代码库的一部分,以便将其置于版本控制之下(是的,git)
试着用这个。它将帮助您自动更新模式、数据以及与数据库相关的所有内容,并且它知道如何将应用程序的数据库从1.1迁移到1.2,也可以从1.1迁移到1.6。还有其他数据库迁移工具,如Flyway,您可以查找它们并四处玩。非常感谢您的回答,我明白您的意思,我不知道如何做。。。我是否可以找到ddl模式?如何为DBA提供支持?如何调整模型?最后一行我如何给“生产DBA”提供最终的DDL?@Aharon您将在DB上创建环境DB模式(例如MySQL o PostgreSQL);通过使用任何DB客户端(或通过命令行),您可以连接到开发DB并使用export DB选项;导出模式后,就有了DDL(它是一个公共的.sql文件);然后,您可以将此文件交给DBA检查是否有任何改进,或者交给生产DBA(负责生产环境的DBA),以便让他们创建DBlast thing。。提取的架构是一个普通的.sql文件,不需要修改,除非sql客户机告诉我要修改?它是一个普通的.sql文件;您应该将此文件交给DBA,以便他们可以创建模式并检查是否需要任何改进。如果不需要改进,sql可以保留,因为它可能是不的重复。我已经看到了这个问题,这不是我现在问你的问题,我想我不能更新数据库。。。我可以第一次使用DDL,然后使用Liquibase?因为我现在还不知道该怎么用,而且它看起来也没那么火辣(如果你能分享一个好的图坦卡蒙或youtuve视频来解释我的目的!!!)你确实需要付出一些额外的努力才能开始使用它,但它是值得的。从他们网站上的文档开始,比如:然后从那里扩展。有很多例子和啧啧称奇。就像其他事情一样,你可以尝试一些小项目来获得感觉。嘿,伙计,你能帮我吗?我不能在我的项目中配置liquibase。我能联系你寻求帮助吗?