EJB,春季和冬眠

| 我从事Java标准版开发已有一段时间了,其框架和解决方案对我来说是显而易见的(Swing for GUI等)。我最近开始了为自己的需要构建服务器并托管网页的任务(服务器除了托管网页外还将做的事情将包括个人SVN托管,并将更多的网络功能集成到现有和将来应用程序)。对于仅用于单台计算机的编码(即,分布式计算等并不是真正的问题)-我不确定Spring,Hibernate和EJB之间的关系,并且对每种功能都不了解。信息将不胜感激。我知道Spring是EJB的替代品,而Hibernate是对象关系映射库,那么EJB是否将两者结合起来?
已邀请:
总的来说,EJB3由3种bean类型组成。消息驱动Bean,无状态/有状态会话Bean和实体Bean或JPA(Java持久性体系结构)。 Hibernate可以用作JPA提供程序,但不必那样使用。 Spring具有与消息驱动Bean和无状态/有状态会话Bean大致相似的功能,但没有JPA的等效功能。相反,它允许您直接使用JPA或休眠状态,但是如果将Spring与JPA结合使用,则需要一个EJB容器。 另一个区别是EJB是由\'containers \'提供的,而spring是可以部署到java se应用程序或java servlet容器Web应用程序(如jetty或tomcat)中的框架。这是一个重要的区别。 Tomcat不是EJB容器,而是servlet容器,因此,如果您仅使用基本的tomcat,则不能使用EJB,但可以通过在Web应用程序中包含必需的spring jar文件来使用spring(WEB-INF / lib)。在这种情况下,您也不会使用JPA,但可以使用休眠模式。 ARE EJB容器的某些Java服务器包括weblogic,websphere,jboss,geronimo和glassfish。如果将Tomcat与OpenEJB结合使用,则它可以成为EJB容器。 在目前正在开发的应用程序中,我使用的是tomcat + openejb,所以我有一个EJB容器,因此可以将JPA与OpenJPA一起用作持久性提供程序。我正在使用Spring MVC进行Web应用程序开发,并且很可能会使用Spring Security。我可能还会使用无状态会话EJB来封装业务功能,但是我也可以像使用无状态会话ejbs一样轻松地使用Spring服务/ dao bean。 有时很难弄清楚应该使用哪个框架或容器的哪个部分,并且实际上归结为要么偏好,要么使用其中一个不存在的功能,而后者则不易使用。另一个考虑因素是内存利用率。一些ejb容器在启动时没有运行任何应用程序时会消耗大量内存。这是我最终使用tomcat + openejb的原因之一。希望这可以帮助。

要回复问题请先登录注册