2

SpringコンテキストでEJBを使用すると、「純粋な」EJB3環境で使用した場合と同じメリットが得られることを理解しましたが、これは本当ですか?私はグーグルで検索しましたが、明確で明確な答えを見つけることができません。

たとえば、データベース内のいくつかのテーブルを更新するセッションBeanがあり、システム例外がスローされたとします。「純粋な」EJB3環境では、トランザクションはロールバックされます。たとえば、Springを使用してこのBeanを@Autowireした場合、SpringはEJB3コンテナと同じ方法でトランザクション処理を処理しますか?または何?特定の構成が必要なのか、それとも完全に「自動」なのか。

4

4 に答える 4

6

EJB を Spring コンテキストで使用すると、「純粋な」EJB3 環境で使用した場合と同じ利点が得られることを理解しましたが、これは本当ですか?

通常、POJO + SpringまたはEJB3 のいずれかを使用します。「EJB in Spring」の意味に少し混乱しています...

POJO + Spring と EJB3 は現在非常に近く、宣言型トランザクション管理に関しては同じ機能を備えています。

私はセキュリティの詳細をすべて知っているわけではありませんが、両方のテクノロジも非常に似ていると言えます。

実際、Spring と EJB3 はどちらも他の仕様に依存しています。重要なものは、JPA (持続性)、JTA (分散トランザクション)、JMS (メッセージング)、JDBC (データ ソース) です。2 つの技術スタックに存在するための優れたサポート。

どちらのテクノロジも非常に柔軟になり、使用するものと使用しないものを選択できます。したがって、アプリに EJB3 を含めることができます。サーバーであり、非常に軽量です。または、本格的なアプリとほぼ同じくらい重いすべてのモジュールで Spring を使用することもできます。サーバ。

EJB3 モデルは、リモーティング、ステートフル セッション Bean (SFSB)、コンテナー管理のトランザクション、拡張永続コンテキストなどを備えた、まだ少しリッチなモデルだと思います。さらに、アプリによってはクラスタリングをサポートする可能性があります。サーバ。しかし、これらはめったに使用されない高度な機能です (そして、IMO には専門知識が必要です)。

EJB3 と Springを参照してください

于 2010-06-01T18:17:52.167 に答える
3

spring には多くの機能があり、そのうちの 1 つはtransaction managementであり、すべての異なる orm 実装 (jpa、raw hibernate、jdbc、jdo など) で共通の抽象化を使用します。デフォルトの動作では、トランザクション メソッドでは実行時例外によってロールバックが発生しますが (これはおそらく必要なことです)、ロールバック ルールを微調整することもできます。

ただし、これには EJB は必要ありません。EJB (ステートレス、ステートフル、mdb) を使用しない場合は、JPA で十分であり、Spring JPA のサポートは優れています。90% のケースで、Spring は EJB なしで必要なものをすべて提供します。


編集:

Spring EJB 統合についてこれを読む

于 2010-06-01T13:35:57.610 に答える
2

私は記事へのリンクで非常に良い答えを得ました。それらから、Bean が Spring コンテキストで<jee:jndi-lookup>. これに関する簡単な記事も見つかりました: http://java.dzone.com/articles/ejb-30-and-spring-25

ただし、私にとってはすべて同じように優れているため、1つの答えだけを受け入れることはできませんが、正確に適切なものはありません:)私の質問が最初から十分に明確ではなかった可能性があります...

(私自身の質問への回答としてこれを投稿することが提案されました)

于 2010-06-08T08:42:13.783 に答える
2

Spring でトランザクションを処理し、それに応じてロールバックすることができます。そのように構成する必要がありますが、これは EJB にも当てはまります。

人生において真に「自動的」なものはありません。いつか欲しいものをコードに伝える必要があります。

本当の問題は、なぜ EJB と Spring の両方が必要だと思うのですか? EJB でできることはすべて、Spring で POJO を使用して実行できます。ここでEJBがあなたを買っているのは何ですか?

于 2010-06-01T13:33:47.450 に答える