【发布时间】:2019-12-09 18:46:55
【问题描述】:
我正在开发一个 Java 项目(使用 Spring Boot、Thymeleaf、Hibernate、JPA、MySql)。每次我创建一个新的模型类时,我都必须在数据库中创建一个表,或者如果我对模型类进行任何更改,我必须自己更改表。有什么办法可以避免这个数据库相关的东西。例如,我将创建模型类并声明它们的关系,我的数据库表将自动生成。将来,如果我对我的类进行任何更改,它们将自动应用于数据库而不会丢失任何数据。
之前我在 PHP,Laravel 工作过。我需要做的就是1)运行命令php artisan make:migration create_posts_table,2)声明$table->string('title');,$table->foreign('user_id')->references('id')->on('users');等列,然后3)运行命令php artisan migrate。而已。不需要 SQL 脚本。我想知道Java,Spring是否有这样的东西。
【问题讨论】:
-
实际上,我认为自动生成数据库是不好的做法,仅仅是因为您对约束名称没有/有限的控制。此外,当更改投入生产时,您只能确定,如果您手动执行,数据库不会以任何方式损坏
-
另外this answer 解释了
spring.jpa.hibernate.ddl-auto=update的作用 -
@XtremeBaumer 谢谢。我以前看过这个答案。但不建议在生产中使用。这就是为什么我一直在寻找其他选择。所以如果我在开发中使用
spring.jpa.hibernate.ddl-auto=update并从生产中删除,那么对项目进行了一些修改,如何将修改应用于生产部分?
标签: java mysql database hibernate spring-boot