首页 > 解决方案 > 为什么@Table注释在通过spring的CRUD操作中是可选的

问题描述

我是 spring 和 spring-boot 的新手,在学习 Spring CRUD 时,我浏览了不同的文章,我看到了这些行。

“为什么@Entity 注释是强制性的?……嗯,这就是 JPA 的设计方式。当你创建一个新实体时,你必须至少做两件事用 @Entity 注释它创建一个 id 字段并用 @Id 注释它其他任何东西都是可选的,例如,表名派生自实体类名(因此@Table 注释可以是可选的),表的列是从实体变量派生的(因此@Column 注释可以是可选的),等等…… "

所以我的问题是,如果我们不提供@Table注解和@Column注解,spring 将如何对表及其列名进行分叉。

标签: javaspringspring-bootjpa

解决方案


正如您在 Spring Boot 的上下文中提出的问题。有两个选项决定命名策略:

spring.jpa.hibernate.naming.implicit-strategy

当我们没有在实体定义中显式提供表名和列名时,此选项用于确定名称

通常这默认为:ImplicitNamingStrategyJpaCompliantImpl

更多实现

spring.jpa.hibernate.naming.physical-strategy

这是为数据库对象名称应用物理命名规则的更可定制、可插拔的策略契约。

默认情况下,SpringPhysicalNamingStrategy使用 a 将所有点的驼峰式大小写替换为下划线。此外,表名以小写形式生成。


推荐阅读