2011-11-23 52 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

相關問題