Spring JPA 中的@Entity 是啥?

Posted

技术标签:

【中文标题】Spring JPA 中的@Entity 是啥?【英文标题】:What is @Entity in Spring JPA?Spring JPA 中的@Entity 是什么? 【发布时间】:2020-12-04 10:29:11 【问题描述】:

具体来说,我指的是javax.persistence.Entity。

根据我将鼠标悬停在上面时显示的文档,在 VS Code 中它指出:

指定类是一个实体。此注释适用于 实体类。

对于 Spring JPA,类是实体意味着什么?

【问题讨论】:

为什么不喜欢? 【参考方案1】:

Entity 类型的类表示在抽象级别上与数据库中的表相关的类。 此类实例化的每个对象都表示表本身的一个元组,包含后者的信息。 我建议您了解object relational mapping 是什么。 我还推荐 this page 讨论 Spring 上 ORM 的(Spring 文档)

【讨论】:

【参考方案2】:

我做了一些搜索以找到答案。还是决定发了 我抬头 docs.oracle.com 在发布我的问题之前。

实体是一个轻量级的持久域对象。通常,一个 entity 表示关系数据库中的一个表,每个实体 实例对应于该表中的一行。初级编程 实体的工件是实体类,尽管实体可以使用 辅助类。

实体类必须遵循这些要求。

该类必须使用 javax.persistence.Entity 注释进行注释。
该类必须具有公共或受保护的无参数构造函数。该类可能有其他构造函数。
该类不得声明为 final。没有方法或持久实例变量必须声明为 final。
如果实体实例作为分离对象按值传递,例如通过会话 bean 的远程业务接口,则该类必须 实现 Serializable 接口。
实体可以扩展实体类和非实体类,非实体类可以扩展实体类。
持久实例变量必须声明为私有、受保护或包私有,并且只能由实体直接访问 类的方法。客户端必须通过访问器或业务方法访问实体的状态。

另一个有趣的资源是youtube video

TL;DR:@Entity 注解定义了一个类可以映射到一个表。

【讨论】:

阅读 Hibernate 文档或有关 Hibernate 的书籍。这是一个重要的话题,值得花一些时间来避免以后花费数小时的谷歌搜索。你刚才说的是 VS Code 吗? :// 我有 intellij 但我只是习惯了 vs code 哈哈... 是的,我是这么认为的:) 我以后肯定会阅读更多的技术书籍。但是,我认为现在,*** 和类似的东西很适合我的需求。但是感谢您的评论 :) 这确实是一种很酷的思考方式;读一本书可能需要一些时间,但将来会节省更多。

以上是关于Spring JPA 中的@Entity 是啥?的主要内容,如果未能解决你的问题,请参考以下文章

JPA @Entity 中的 Bean 注入

默认情况下,不要使用Spring Data Rest和Jpa公开Entity类中的字段

使用 Spring & JPA,获取 java.lang.IllegalArgumentException: Unknown entity

spring data jpa中的存储是啥?

学习Spring-Data-Jpa---JPA基本注解

spring boot + JPA + MySql + Entity 表生成大写