java - 为什么@Table注释在通过spring的CRUD操作中是可选的
问题描述
我是 spring 和 spring-boot 的新手,在学习 Spring CRUD 时,我浏览了不同的文章,我看到了这些行。
“为什么@Entity 注释是强制性的?……嗯,这就是 JPA 的设计方式。当你创建一个新实体时,你必须至少做两件事用 @Entity 注释它创建一个 id 字段并用 @Id 注释它其他任何东西都是可选的,例如,表名派生自实体类名(因此@Table 注释可以是可选的),表的列是从实体变量派生的(因此@Column 注释可以是可选的),等等…… "
所以我的问题是,如果我们不提供@Table
注解和@Column
注解,spring 将如何对表及其列名进行分叉。
解决方案
正如您在 Spring Boot 的上下文中提出的问题。有两个选项决定命名策略:
spring.jpa.hibernate.naming.implicit-strategy
当我们没有在实体定义中显式提供表名和列名时,此选项用于确定名称
通常这默认为:ImplicitNamingStrategyJpaCompliantImpl
更多实现。
spring.jpa.hibernate.naming.physical-strategy
这是为数据库对象名称应用物理命名规则的更可定制、可插拔的策略契约。
默认情况下,SpringPhysicalNamingStrategy
使用 a 将所有点的驼峰式大小写替换为下划线。此外,表名以小写形式生成。
推荐阅读
- c# - 使用 Entity Framework Core 在具有多对多关系的数据透视表中插入新记录
- matlab - 2 Matlab 2018a 中 minspantree.m 的问题
- terraform - 如何将令牌环境变量传递给提供者模块?
- android - Python 安卓开发
- c# - 将二进制字符的十进制值转换为字符
- php - Docker lumen 应用程序抛出 php_network_getaddresses: getaddrinfo failed: Name or service not known
- c++ - 尝试运行 OpenCV 代码时出现“no rule to make target”错误
- android - Android RecyclerView 不在屏幕上显示卡片视图
- bash - 如何在 bash 脚本中运行多个命令行工具实例?+ 脚本的用户输入
- c++ - 如何为 C++ 数组中的特定对象调用函数?