我已经开始使用JPA了,我对为什么需要使用@Entity
注释该类有疑问。我能想到的唯一原因是,自动生成工具可以看到它是一个实体,如果想要在数据库中创建相应的表。
public class Book {
//Fields
}
VS
@Entity
public class Book {
//Fields
}
我知道第一个代码片段会在我尝试使用entitymanager持久化时抛出异常....但我想知道为什么我们首先添加@Entity
。
答案 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