2010-07-14 92 views
4

我對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://stackoverflow.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

回答

2

我不認爲有很多情況當使用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會增加不必要的開銷。

7

看起來像另一個的Java EE與春交...

EJB/Java EE和春天現在是兩個成熟的,有競爭力的基於Java技術棧。通常沒有理由使事情複雜化並混合起來。 EJB實際上學習並使用了Spring等人的許多想法。

它們都不能讓你進入XML /配置地獄。兩者都很容易入門,至少在非常基本的東西。

Spring不僅僅是IoC/SOA /事務。它更像是一個工具箱 - 它已經準備好與ORM和事務,Web/MVC,安全,定時器/日程安排等框架集成或直接提供框架。您可以精確挑選您需要的部分。您不必強迫使用容器(您可以在獨立的「桌面」應用程序中使用它)。

EJB是Java EE堆棧的一部分。這是,的標準。它不像Spring那麼廣泛和靈活,但它由所有Java EE容器定義支持。

我更喜歡春天的自由和前進一步。

0

任何人都不會認爲EJB3的定義數據模型的方法是使用一系列分佈在幾個類上的java註釋優於Hibernates簡單的模型定義語法超越了我。

它的可維護性噩夢。你爲什麼有一個交點表?它可能在代碼庫的幾乎任何地方被定義。一些初級程序員玩註釋,現在你的java類與實際的數據庫不同步。

有性能問題(你會)。你不僅得到了經典的Hibernate「我不知道它使用了什麼SQL」,你還有「我不知道爲什麼桌子是這樣構建的」問題。