我一直在做Java標準版的開發,而且框架和解決方案對我來說相當明顯(Swing for GUI等)。我最近開始根據自己的需要開發一個服務器,並託管一個網頁(服務器除了託管一個網頁外,還包括個人SVN託管以及將更多網絡功能集成到現有和未來的應用程序中)。對於只有一臺計算機進行編碼(即分佈式計算等實際上並不值得關注) - 我並不完全確定Spring,Hibernate和EJB之間的關係,並且對於每個計算機的功能都不太瞭解。信息將不勝感激。我知道Spring是EJB的替代品,Hibernate是一個對象關係映射庫,EJB是如何結合的呢?EJB,spring&hibernate
回答
總結EJB3由3種bean類型組成;消息驅動Bean,無狀態/有狀態會話Bean和實體Bean或JPA(Java持久體系結構)。 Hibernate可以用作JPA提供程序,但不必這樣使用。
Spring的功能與消息驅動Bean和無狀態/有狀態會話Bean大致相似,但它沒有與JPA等效的功能。相反,它允許您直接使用JPA或hibernate,但如果將Spring和JPA結合使用,則需要一個EJB容器。
另一個區別是EJB由'containers'提供,而spring是一個可以部署到java se應用程序或java servlet容器web應用程序(如jetty或tomcat)的框架。它是一個重要的區別。 Tomcat不是EJB容器,只是一個servlet容器,因此如果只使用基本的tomcat,則不能使用EJB,但可以通過在Web應用程序中包含所需的彈簧jar文件來使用spring(WEB-INF/lib )。在這種情況下,你不會使用JPA,但你可以使用休眠。一些Java容器服務器,包括weblogic,websphere,jboss,geronimo和glassfish。如果將Tomcat與OpenEJB結合使用,Tomcat可以成爲EJB容器。
在我目前正在開發的應用程序中,我使用的是tomcat + openejb,所以我有一個EJB容器,所以我可以使用JPA和OpenJPA作爲持久性提供程序。我正在使用Spring MVC進行Web應用程序開發,並且很可能會使用Spring安全以及跟蹤。我可能也會使用無狀態會話EJB封裝業務功能,但我也可以輕鬆使用Spring服務/ dao bean而不是無狀態會話ejbs。
它有時會弄清楚你應該使用哪個框架或容器的哪些部分,並且真正歸結爲偏好還是使用其他部分中不存在的功能或易用性。另一個考慮是內存利用率。一些ejb容器消耗大量內存,只是在沒有應用程序運行的情況下啓動。這是我最終使用tomcat + openejb的原因之一。希望這可以幫助。
非常好,簡單的解釋 – Xorty 2011-04-20 06:57:46
- 1. Spring和Hibernate EJB事件
- 2. NoClassDefFoundError使用Spring Maven Hibernate org/hibernate/ejb/HibernatePersistence
- 3. EJB相當於在Spring + JPA + Hibernate體系
- 4. EJB 3或Hibernate 3
- 5. Spring JPA Hibernate Vs Spring Hibernate
- 6. Spring-Hibernate
- 7. java.lang.NoClassDefFoundError:org/hibernate/criterion/Criterion | Spring Hibernate
- 8. Spring + Hibernate + JPA
- 9. Spring Hibernate maven POM
- 10. Hibernate和Spring DAO
- 11. 在Hibernate和Spring
- 12. Spring Hibernate和ENUM
- 13. Spring Hibernate onetomany relationship
- 14. Spring 2 Hibernate Annotation
- 15. Maven/Spring/Hibernate NoSuchMethodError:org.hibernate.engine.jdbc.spi.JdbcServices.getConnectionProvider()
- 16. Spring 4 with Hibernate
- 17. Spring Hibernate集成
- 18. Hibernate SessionFactory到Spring
- 19. DAO,Spring,Hibernate,Jboss
- 20. Spring,Hibernate和Maven
- 21. Spring + Hibernate + Maven NoSuchBeanDefinitionException
- 22. DAO,Spring and Hibernate
- 23. flex spring jpa hibernate
- 24. Spring + Hibernate的confuguration
- 25. 與Spring + Hibernate的
- 26. 在EJB或Spring中使用Spring Security?
- 27. @Spring Spring方法調用Hibernate
- 28. Spring + Hibernate + Spring Security配置
- 29. 從Spring訪問EJB類
- 30. Spring的EJB無狀態bean
你看過http://stackoverflow.com/questions/4281304/what-is-the-difference-between-ejb-hibernate-spring-and-jsf? @A Lee發佈的鏈接上的+1, – 2011-04-20 05:18:44
+1。 – hooknc 2011-04-20 05:23:01