为什么@Table注释在Spring的CRUD操作中是可选的

时间:2019-06-05 05:50:18

标签: java spring spring-boot jpa

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

  

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

所以我的问题是,如果我们不提供Error connecting to the service protocol: HttpException: Connection closed before full header was received, uri = http://127.0.0.1:52661/75sNfQnMaEw=/ws 批注和@Table批注,spring将如何对表及其列名进行分叉。

1 个答案:

答案 0 :(得分:1)

您在Spring Boot上下文中询问您的问题。有两个选项可以确定命名策略:

  

spring.jpa.hibernate.naming.implicit-strategy

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

通常,该默认设置为:ImplicitNamingStrategyJpaCompliantImpl

更多implementations

  

spring.jpa.hibernate.naming.physical-strategy

这是更可定制的,可插入的策略合同,用于为数据库对象名称应用物理命名规则。

默认情况下,使用SpringPhysicalNamingStrategy时所有点的驼峰式大写字母都用下划线代替。另外,表名以小写形式生成。