2011-11-23 58 views
3

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

public class Book { 
    //Fields 
} 

@Entity 
public class Book { 
    //Fields 
} 

我所知道的第一个代码片段会抛出一个异常,如果我尝试坚持用等EntityManager的....但我不知道为什么我们做第一添加@Entity地点。

回答

3

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

3

从Java持久性API FAQ:

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

有一个@Entity注释是关于添加元数据(配置)到一个Pojo。一种不同的方法是让它实现一个特定的接口和/或XML配置。但是实际代码中的注释更加接近,并且可以通过Java编译器进行检查。

您可以在这里阅读更多关于此:The Java Persistence API - A Simpler Programming Model for Entity Persistence

0

我想约翰是这样问的,因为我们注释了除了@Entity(@Id等)以外的其他注释的POJO。问题是如果JPA实现可以检查该类,然后进入该类来获取映射的其余部分,而不是遍历项目中的所有类以尝试扫描不存在的元数据。

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

相关问题