网站设计确认,erp企业管理系统平台,网站百度没收录,个人空间网页设计html版本
spring-boot:3.2.2 hibernate:6.4.1.Final
配置项目
DDL模式
生成定义语句修改表结构
配置路径#xff1a;spring.jpa.hibernate.ddl-auto配置值#xff1a;org.hibernate.tool.schema.Action枚举类型值
可选值#xff1a;
可选值说明none默认值。不操作create-…版本
spring-boot:3.2.2 hibernate:6.4.1.Final
配置项目
DDL模式
生成定义语句修改表结构
配置路径spring.jpa.hibernate.ddl-auto配置值org.hibernate.tool.schema.Action枚举类型值
可选值
可选值说明none默认值。不操作create-only当使用嵌入式数据库且没有模式管理器时此项为默认值。创建如果已存在将报错drop删除create删除后再创建create-drop先删除SessionFactory启动时创建SessionFactory关闭时再删除validate仅校验update必要时更新truncate清空数据
隐式命名策略
如果没有通过Table或者Column等注解显式指定表名、列名将通过隐式命名策略生成对应名称
配置路径 spring.jpa.hibernate.naming.implicit-strategy配置值指定实现 org.hibernate.boot.model.naming.ImplicitNamingStrategy 接口的类全名默认值 org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy
可选官方实现
类名说明org.hibernate.boot.model.naming.ImplicitNamingStrategyJpaCompliantImpl匹配JPA2.0标准的实现使用JPA注解指派的名称或者根据类名属性名。其他实现都继承于此类。org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy默认值。重写了关联连接表名规则org.hibernate.boot.model.naming.ImplicitNamingStrategyComponentPathImpl重写了 AttributePath 转换规则解析为完整路径org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyHbmImpl命名不依赖任何JPA注解org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl匹配JPA1.0标准的实现
物理命名策略
将显式指定或隐式命名策略转换得到的逻辑名称转换为数据库实际使用的物理名称
配置路径spring.jpa.hibernate.naming.physical-strategy配置值指定实现 org.hibernate.boot.model.naming.PhysicalNamingStrategy 接口的类全名默认值org.hibernate.boot.model.naming.CamelCaseToUnderscoresNamingStrategy
可选官方实现
类名说明org.hibernate.boot.model.naming.CamelCaseToUnderscoresNamingStrategy将驼峰规则的命名转换为下划线规则org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl保持与逻辑名称一致不做任何转换
源码
spring-boot-autoconfigure org/springframework/boot/autoconfigure/orm/jpa/HibernateProperties.java
ConfigurationProperties(spring.jpa.hibernate)
public class HibernateProperties {// 命名策略配置private final Naming naming new Naming();// DDL模式配置private String ddlAuto;...// 读取DDL模式配置按优先级读取配置或默认值private String determineDdlAuto(MapString, String existing, SupplierString defaultDdlAuto) {// 1. 获取hibernate.hbm2ddl.auto配置值String ddlAuto existing.get(AvailableSettings.HBM2DDL_AUTO);if (ddlAuto ! null) {return ddlAuto;}// 2. 获取spring.jpa.hibernate.ddl-auto配置值if (this.ddlAuto ! null) {return this.ddlAuto;}// 3. 获取jakarta.persistence.schema-generation.database.action配置值if (existing.get(AvailableSettings.JAKARTA_HBM2DDL_DATABASE_ACTION) ! null) {return null;}// 4. 默认为nullreturn defaultDdlAuto.get();}// 命名策略配置类public static class Naming {// 应用命名策略没有配置属性则填充默认值private void applyNamingStrategies(MapString, Object properties) {applyNamingStrategy(properties, AvailableSettings.IMPLICIT_NAMING_STRATEGY, this.implicitStrategy,() - SpringImplicitNamingStrategy.class.getName());applyNamingStrategy(properties, AvailableSettings.PHYSICAL_NAMING_STRATEGY, this.physicalStrategy,() - CamelCaseToUnderscoresNamingStrategy.class.getName());}...}...
}