我正在閱讀EJB 3 in Action書籍,我有以下問題:
POJO是否使用@Entity等編寫和註釋,也是EJB實體類型?EJB和JPA如何關聯?
我不明白JPA與EJB有什麼關係。 JPA現在不是自己的規範嗎?實體也包含在自己的持久性容器中。他們談論EJB 3 Java持久性API等,但我不明白實體與EJB有什麼關係。
我正在閱讀EJB 3 in Action書籍,我有以下問題:
POJO是否使用@Entity等編寫和註釋,也是EJB實體類型?EJB和JPA如何關聯?
我不明白JPA與EJB有什麼關係。 JPA現在不是自己的規範嗎?實體也包含在自己的持久性容器中。他們談論EJB 3 Java持久性API等,但我不明白實體與EJB有什麼關係。
JPA被設計爲替代EJB2實體bean,並且已經開始作爲EJB3規範的一部分。
因爲在EJB容器外部也使用JPA是有意義的,所以它現在有了它自己的規範,但它仍然與EJB3相關,因爲兼容的EJB3容器必須提供一個JPA實現,它集成到事務處理的容器。
因此,即使EJB規範不再那麼緊密,EJB規範也需要一個實現,這就是爲什麼它被看作EJB世界中的第三種組件類型? – LuckyLuke
EJB2具有「實體豆」,它是第三種類型的組件。 EJB3有JPA,它有「實體」。但我認爲他們不再被視爲「EJB組件」。他們只是被稱爲JPA實體。 –
你說得對。 JPA比只支持EJB有更多的事情要做。這就是JPA成爲單獨的JSR或規範的原因。 EJB在其規範中使用或啓用了JPA,因爲JPA是一個很好的標準。如果設計正確,您現在可以在不更改代碼的情況下在JPA供應商之間切換
可以獨立於JPA使用EJB規範(儘管JPA已被包含爲EJB規範的一部分),同樣,JPA也可以用於EJB規範之外的更多內容。儘管如此,EJB規範還是可以非常輕鬆地將JPA Entitiy Manager(及其用法)注入其bean中,從而使編程變得更加簡單。當然,現在可以使用CDI上的新JSR輕鬆實現:-)。
所有支持EJB規範的應用程序服務器都應該支持JPA。你可以看到this thread獲取更多信息。
直到版本2.1的EJB規範,實體bean類必須實現javax.ejb.EntityBean
接口,併爲樣板方法(如ejbLoad,ejbStore,ejbActivate和ejbPassivate)提供實現。
EJB 3.0採用了JPA規範。一個實體bean的概念被JPA實體的簡單概念所取代。要創建這樣的實體,不需要接口實現或鍋爐板方法。該實體是具有@Entity
註釋的POJO。
因此,在實踐中使用的Java EE應用程序「實體Bean」的EJB是死的(JPA埋)作爲EJB的3
你的問題是真棒。 –