關於將由完整Java EE應用程序服務器提供服務的Java EE Web應用程序,例如GlassFish,這是最好的ORM解決方案? EJB 3或Hibernate 3 爲什麼?EJB 3或Hibernate 3
回答
這兩個是完全不同的。
EJB3
是一個組件模型,它本身沒有任何與ORM直接相關的東西。它有助於輕鬆管理事務,並讓您可以輕鬆地從JPA獲得實體管理器,這是Java EE中的標準化ORM解決方案。 (3)確實是一個ORM解決方案,並且正好碰到了一個實現JPA的解決方案。
所以更合乎邏輯的問題是使用標準化的JPA接口還是直接使用Hibernate核心API。然後,後續問題可能是是使用JPA獨立還是與EJB 3結合使用。
答案取決於您確切需要什麼,但通常將JPA與EJB 3結合使用是最簡單的解決方案。使用JPA或Hibernate standalone需要更多詳細的代碼,而且您需要手動管理事務,這可能會很痛苦。
JPA vs Hibernate是另一場辯論。 JPA具有標準化接口的好處,因此更多的開發人員可能會熟悉它。另一方面,原生Hibernate API總是超級JPA的集合,因此提供更多的功能。
通常開發人員主要將他們的代碼基於JPA,然後在有意義的地方使用一些Hibernate特定的註釋或API調用。在99.99%的情況下,支持混合API使用。
還要注意Glassfish與EclipseLink
捆綁在一起,而不是Hibernate。 EclipseLink可以與Hibernate相媲美,但它早於十年。 Hibernate從EclipseLink中獲得了很多(當時稱爲TopLink)。
另見這個答案我給了一個類似的問題:Database table access via JPA Vs. EJB in a Web-Application
它們是相似的; EJB的3.0規範花了很多時間從Hibernate和Spring。
我沒有任何一個報價的公司指標,但我會說,如果您擁抱Glassfish,那麼使用它的所有技術對我來說都是有意義的。爲什麼引入另一個依賴?看看Glassfish是否能爲你做這項工作。
你問什麼是API更好:EJB3(JPA)或休眠?我之所以這麼說,是因爲你在問EJB3 JPA(只有API)和Hibernate(這是實現和API)。因此,爲了比較蘋果和蘋果,你需要比較API。您可以選擇標準(JPA)和更強大的專有API(Hibernate)。
但是通過選擇JPA還有另一個選擇:實現。通過選擇Hibernate實現,基本上可以拋棄你的問題,因爲JPA和Hibernate都可用。所以你的問題會改變:我應該選擇哪種JPA實現(在Hibernate,EclipseLink,OpenJPA,DataNucleus等之間)?...
請注意* EJB3(JPA)*可能稍微有點混亂。它表明EJB3是JPA的另一個名稱,但事實並非如此。它在技術上已經是EJB 3.0中完全獨立的規範,並且已經在當前的3.1版本的EJB中形式化了。 JPA在技術和組織上都不是完全不同的規範。您無法以任何方式交換條款。 – 2011-01-10 22:21:06
- 1. Hibernate 2.1.6或3.x?
- 2. 問題,EJB 3
- 3. EJB 3與JDBC
- 4. EJB 3與Swing
- 5. TimerService EJB 3
- 6. Glassfish EJB 3 OpenJPA 2
- 7. EJB 3存根代
- 8. Spring 3 Bean中的EJB 3 Sessioncontext
- 9. 將EJB 2.x BMP實體bean與Hibernate 3.x混合使用
- 10. JBoss EJB 3問題DeploymentException
- 11. Glassfish的EJB 3注無法
- 12. EJB 3計時器問題
- 13. EJB 3 + JMS和事務
- 14. 先決條件EJB 3
- 15. Spring 3 EJB 3.1 JPA 2
- 16. 未能找到類 - Spring 3,Hibernate 3,JPA
- 17. EJB,spring&hibernate
- 18. MySQL UTF8與Hibernate 3和Spring
- 19. maven + spring mvc 3 + jpa + hibernate + ehcache
- 20. Spring 3.x和Hibernate Envers
- 21. Hibernate + Spring 3不節能
- 22. Hibernate 3 OneToOne使用PostgreSQL
- 23. 加入3桌Hibernate和JPA
- 24. 如何在EJB 3中使用攔截器3 XML
- 25. EJB 3靜態引用或運行時查找?
- 26. 服務門面(根據Adam Bien) - EJB 3
- 27. EJB中的條件查詢3
- 28. EJB 3部署在JBoss AS中7
- 29. EJB 3定時器多次執行
- 30. Websphere 85 ejb 3部署問題
有很多其他持久性解決方案具有明顯的優勢;你似乎在你的問題中忽略了他們,所以任何「最好」的答案都是任意的。可能最好的依賴於應用程序本身,正在編寫它的開發人員以及正在使用的數據存儲......並且您還沒有提供有關這些信息 – DataNucleus 2011-01-09 18:38:12