EJB3或“Spring3 + hibernate”哪个适合

时间:2011-08-09 15:12:33

标签: java hibernate spring java-ee ejb-3.0

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

2 个答案:

答案 0 :(得分: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服务等)非常出色。

答案 1 :(得分:9)

它们都非常相似。也请看这个问题:EJB 3.1 or Spring 3.. When to choose which one?

如果使用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中学习并且现在采用相同的方法。

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