为什么在配置文件中定义类时需要@Entity Annotation

shr*_*ree 5 java hibernate

我是Hibernate的新手.我正在阅读一些教程,我发现如果我们在hibernate配置文件中添加模型类,我们仍然需要@Entity在模型类中添加注释.

为什么会这样?

Ace*_*win 1

我会引用此文档

2.2.1. 将 POJO 标记为持久实体

每个持久 POJO 类都是一个实体,并使用 @Entity 注释进行声明(在类级别):

@Entity public class Flight 实现 Serialized { Long id;

@Id
public Long getId() { return id; }

public void setId(Long id) { this.id = id; } }         
Run Code Online (Sandbox Code Playgroud)

@Entity将该类声明为一个实体(即持久化的POJO类),@Id声明该实体的标识符属性。其他映射声明是隐式的。Flight 类映射到 Flight 表,使用列 id 作为其主键列。笔记

异常配置的概念是 JPA 规范的核心。

根据您是否注释字段或方法,Hibernate 使用的访问类型将是字段或属性。EJB3 规范要求您在要访问的元素类型上声明注释,即,如果使用属性访问,则声明 getter 方法;如果使用字段访问,则声明字段。应避免在字段和方法中混合注释。Hibernate会根据@Id或@EmbeddedId的位置猜测访问类型。

有一种叫做 JPA 又名 Java Persistence API 的东西。Hibernate 在其实现中遵循这些准则。因此,为了确保它被 JVM 正确识别(以及映射为实体)

JPA 将在持久性管理设置中包含任何用 @Entity 注释的类。如果使用注释,则不需要 persistence.xml。这也适用于其他 JPA 实现,例如 Open-JPA

作为 Java 的经验法则。J2EE 以接口和注释以及各种其他方式的形式提供指南。当有人开发 J2EE 的 API 实现时,他们会遵循这些指令。这就是标准化的方式。