为什么我们需要使用@Entity注释POJO

时间:2011-11-23 09:47:09

标签: java java-ee jpa

我已经开始使用JPA了,我对为什么需要使用@Entity注释该类有疑问。我能想到的唯一原因是,自动生成工具可以看到它是一个实体,如果想要在数据库中创建相应的表。

public class Book {
    //Fields
}

VS

@Entity
public class Book {
    //Fields
}

我知道第一个代码片段会在我尝试使用entitymanager持久化时抛出异常....但我想知道为什么我们首先添加@Entity

3 个答案:

答案 0 :(得分:3)

JPA实现需要知道哪些类要持久化/可持久化(根据JPA规范)。但是你不必注释任何东西......你可以使用orm.xml来定义什么是可持久的。

答案 1 :(得分:3)

来自Java Persistence API FAQ:

  

Java Persistence API是用于对象/关系映射的POJO持久性API。它包含一个完整的对象/关系映射规范,支持使用Java语言元数据注释和/或XML描述符来定义Java对象和关系数据库之间的映射。

拥有@Entity注释是关于向Pojo添加元数据(配置)的全部内容。一种不同的方法是让它实现某个接口和/或xml配置。但注释在实际代码上更接近,可以由Java编译器检查。

您可以在此处详细了解:The Java Persistence API - A Simpler Programming Model for Entity Persistence

答案 2 :(得分:0)

我认为John正在问这个问题,因为除了@Entity(@Id等)之外,我们还使用其他注释来注释POJO。问题是,如果类被注释,JPA实现可以检查然后进入类以获取映射的其余部分,而不是遍历项目中的所有类以尝试扫描不存在的元数据。 / p>

这只是我的想法,我可能也可能不正确...... :-D