EJB3或"Spring3 + hibernate"哪个适合

Kam*_*ire 6 java spring hibernate java-ee ejb-3.0

在使用hibernate的EJB3和Spring 3中有很多常见的东西.我需要找到我可以在哪里使用Spring框架和hibernate而不是EJB3,反之亦然.

duf*_*ymo 9

您可以互换使用它们.

如果使用EJB3,则必须拥有完整的Java EE,EJB3应用服务器.有些是免费的,有些则不是.

如果使用Spring 3,则需要在CLASSPATH中使用Spring JAR,但不需要完整的Java EE应用服务器.根据您的需要,Tomcat或Jetty就足够了.

EJB3实现有多个供应商; 毕竟,EJB3仅仅是一个规范.Spring只有一家供应商.

就个人而言,我更喜欢春天.从版本1.0开始,我已经使用了六年,取得了巨大的成功.这是一个非常高质量的框架.EJB3从Spring和Hibernate的经验中学到了很多东西.我认为Spring的面向方面编程比添加到EJB3的编程要好.其他模块(例如安全性,LDAP,Web服务等)非常出色.

  • >除了收取许可费之外,EJB3没有什么可以做到的,所以Rod给了我们没有任何商业利益的Spring?真?Apache正在收取许可费,因为我使用OpenEJB?真? (2认同)

aki*_*ira 9

它们都非常相似.也看到这个问题:EJB 3.1或Spring 3 ..何时选择哪一个?

如果使用EJB,则可以选择以Java EE为目标.这意味着您不必在WAR中包含任何额外的jar,因为目标环境已经支持EJB.将其与目标Java SE进行比较,您不必在jar中包含类似ArrayList和HashMap的类,因为任何Java SE运行时都已经具有这些类.

当然,您也可以在应用程序中包含EJB jar,如果您想要定位像Tomcat或Jetty这样的servlet容器,这很方便.在这种情况下,OpenEJB可能是最佳选择,但任何EJB实现都可以在嵌入模式下运行其容器(这是EJB规范的要求),并且可以在Java SE中使用.

还有一个EJB版本比完整的EJB更轻量级.这称为EJB3-lite,由Glassfish Web Profile和Resin等服务器支持.它们都比裸Tomcat(Resin是23MB)大得多,并且开箱即用.

我个人认为EJB3比Spring好.它不那么复杂,也不那么重量级.EJB3开始了一场革命,只需要简单的注释,并且强烈地遵守约定优于配置.Spring历史上需要大量的XML才能实现最简单的事情.然而,Spring从EJB学习并且现在采用相同的方法.

在一天结束时,两者都是成熟和良好的技术,但你不能错过任何一个(只是避免混合它们,除非你绝对必须).

  • Duffyomo,我部分同意你的债务,但还有一点.EJB和Spring在创新方面相互锁定.在Java中,EJB最初提出了具有交叉服务的容器管理bean的想法.然而,该模型是侵入性和重量级的.需要大量的XML.Spring通过提出基于pojo的方法简化了EJB,但需要更多的XML.然后EJB跟随Spring,但通过全部注释进一步简化.然后Spring跟随EJB.EJB(通过CDI)然后通过引入类型安全注入进行创新. (3认同)
  • 关于Hibernate的债务,EJB目前还没有负债,但JPA部分是.然而,这种关系是显而易见的,因为Gavin King本人对JPA规范的贡献和Hibernate*是*JPA.更重要的是,Hibernate没有发明这个模型,因为TopLink早就存在了.Hibernate'仅仅'是TopLink的开源替代品.当时Sun的成员(例如Mike Keith)实际上提议从一开始就使用EJB中的TopLink模型,但是他们输给了那些提倡可怕的EJB1/2 Entity bean模型的人. (2认同)
  • 您可以.web.xml是可选的,faces-config.xml是可选的,EJB绝对不需要在任何地方使用单行XML.我可以在一个简单的战争中将pojo放在一个任意的包中,只将@Stateless放在它上面,而且我拥有EJB的全部功能. (2认同)