当我们在使用Spring Data JPA时,通常会在配置文件
application.properties
中指定数据库的初始化模式。此时需要用到
spring.jpa.hibernate.ddl-auto
属性,下面对该属性进行详细解释。
该属性的属性值及其说明
属性值 | 说明 |
---|---|
none | 不指定数据库初始化模式 |
create | 当Spring Boot应用运行时,会删除并重新创建数据库。所以每次启动时,所有的数据都会被清空 |
create-drop | 当sessionFactory关闭,表会自动删除 |
validate | 在Spring Boot应用运行时,会检查数据库中的表与java实体类是否匹配。如果不匹配,则运行失败 |
update | 当在java实体类中新增了一个字段,在应用重新运行时,会将字段添加到数据库表中的新列,但不会移除先前存在的列或约束 |
该属性的默认值
当数据库是嵌入式数据库时,Spring Boot会指定该属性默认值为create-drop
;当不是嵌入式数据库时,Spring Boot指定该属性的默认值为none
。
应用场景
在开发阶段中,通常使用update
,但需要注意,update
不会移除先前已经存在的列和约束,即使是不再需要的。
当产品发布的时候,建议使用none
或直接不指定该属性。
参考链接
How does spring.jpa.hibernate.ddl-auto property exactly work in Spring?
Spring Boot Database Initialization