📜  hibernate ddl auto 属性 (1)

📅  最后修改于: 2023-12-03 15:31:07.835000             🧑  作者: Mango

Hibernate DDL Auto属性

Hibernate是一种流行的ORM(对象关系映射)框架,它允许Java开发人员更轻松地将Java对象映射到关系型数据库中。Hibernate DDL Auto属性是一个非常有用的功能,它允许Hibernate自动创建数据库模式/表格并将它们同步到Java类的数据模型中。

Hibernate DDL自动操作

Hibernate提供了以下DDL(数据定义语言)自动操作:

  • create:创建表或更新表结构,如果表不存在则创建
  • create-drop: 创建表或更新表结构, 在SessionFactory关闭时删除
  • update: 只会更新表的结构,不创建新的表
  • validate: 验证每个已映射的表是否存在,不存在则抛出异常
  • none: 不做任何操作
Hibernate DDL自动操作属性

在Hibernate中,DDL自动操作属性控制着Hibernate如何处理表结构更新。

spring.jpa.hibernate.ddl-auto属性

spring.jpa.hibernate.ddl-auto=create

根据应用程序的实体模型,Hibernate会创建新表或将现有表更新为应用程序实体模型的结构定义。这个操作集是DDL自动操作中最具侵略性的。

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

每次SessionFactory启动时,Hibernate都会创建一个新的数据库,并使用实体模型中的定义来创建模式和表,当SessionFactory关闭时将删除数据库。这只适用于开发和测试,因为所有数据都会丢失。

spring.jpa.hibernate.ddl-auto=update

Hibernate会更新表结构,有限地保留表和字段上可能已经存在的数据。这是DDL自动操作的默认设置。

spring.jpa.hibernate.ddl-auto=validate

Hibernate将验证实体模型是否匹配现有数据库模式。如果表或字段缺失,Hibernate会抛出异常。

spring.jpa.hibernate.ddl-auto=none

Hibernate将不会创建表或更新表结构,但仍然会自动管理Hibernate映射的所有其他方面。

总结

Hibernate DDL Auto属性是一个有用的功能,可以自动创建或更新表结构,使得Java开发人员更轻松地将Java对象映射到关系型数据库中。这个功能在开发和测试中特别有用,但在生产中应该谨慎使用。