会话bean和EJB3 vs Spring

会话bean和EJB3 vs Spring

问题描述:

我对EJB 3中的Sessions Beans的功能以及它们是否可以在Spring中典型的中型企业应用程序中被替换感到好奇。会话bean和EJB3 vs Spring

我发现这篇文章: http://drag0sd0g.blogspot.com/2010/01/session-bean-alternative-spring.html 指出以下:“由于大量的注解的, 你几乎可以避开‘XML地狱’使用EJB 3;同样不能说春天的 而且,因为它是Java EE标准不可分割的一部分,所以EJB容器 本地集成了诸如JSF,JSP,servlet,JTA事务管理器,JMS提供程序和应用程序服务器的JAAS安全提供程序等组件。With Spring,你必须担心你的应用服务器是否完全支持这些本地组件和其他高性能特性(如clust)的框架ering,负载平衡和故障转移。如果你不担心这样的事情,那么Spring是一个不错的选择,在所有”

你同意这种说法?过去被认为是因为池的一个非常强大的企业技术无状态会话豆我的问题是:什么时候真的需要使用EJB 3而不是Spring或者除了Spring之外(假设在大公司中是关键任务企业应用程序)?

+0

请参阅http://*.com/questions/68527/should-i-use-ejb3-or-spring-for-my-business-layer – skaffman 2010-07-14 21:11:14

+4

“由于大量使用注释,您几乎可以避免” XML Hell“;同样不能说Spring”这不是真的,你可以只用注释和java代码来配置Spring,但是通过这样做你可以将应用程序紧紧地绑定到Spring框架上,并且你正在失去Eclipse Spring IDE的优秀bean管理特性。如果你使用正确的工具,XML不会随着弹簧而变。 – 2010-07-15 08:08:02

+0

“由于大量使用注释,你几乎可以避免”XML地狱“ - 你现在拥有Annotation Hell。 – 2015-04-22 02:39:05

我不认为有很多情况当使用EJB 3而不是Spring是绝对必要的时候,但是有些情况下使用EJB 3会更容易。正如文章所述,EJB的主要优点是与其他各种JEE技术的集成s,并且从EJB 3开始,Enterprise Bean比以前版本的规范要简单得多。

在POJO或其他中间件技术上使用EJB的经典原因是事务。如果您的业务逻辑需要事务处理,那么EJB提供简单的声明式跨国分界,并通过容器与JTA无缝集成。尽管文章提出支持群集,负载平衡和性能管理是一项优势,但这非常依赖于您选择的JEE应用程序服务器。

我想说决定使用Spring还是EJB 3的关键因素是你的容器。如果您的目标容器是完全符合JEE 5+的应用程序服务器,并且您需要支持事务或消息传递等服务,那么EJB 3是明显的选择。但是,如果您不需要与其他JEE技术集成或部署到轻量级应用程序服务器,那么使用EJB会增加不必要的开销。

看起来像另一个的Java EE与春交...

EJB/Java EE和春天现在是两个成熟的,有竞争力的基于Java技术栈。通常没有理由使事情复杂化并混合起来。 EJB实际上学习并使用了Spring等人的许多想法。

它们都不能让你进入XML /配置地狱。两者都很容易入门,至少在非常基本的东西。

Spring不仅仅是IoC/SOA /事务。它更像是一个工具箱 - 它已经准备好与ORM和事务,Web/MVC,安全,定时器/日程安排等框架集成或直接提供框架。您可以精确挑选您需要的部分。您不必强迫使用容器(您可以在独立的“桌面”应用程序中使用它)。

EJB是Java EE堆栈的一部分。这是,的标准。它不像Spring那么广泛和灵活,但它由所有Java EE容器定义支持。

我更喜欢春天的*和前进一步。

任何人都不会认为EJB3的定义数据模型的方法是使用一系列分布在几个类上的java注释优于Hibernates简单的模型定义语法超越了我。

它的可维护性噩梦。你为什么有一个交点表?它可能在代码库的几乎任何地方被定义。一些初级程序员玩注释,现在你的java类与实际的数据库不同步。

有性能问题(你会)。你不仅得到了经典的Hibernate“我不知道它使用了什么SQL”,你还有“我不知道为什么桌子是这样构建的”问题。