EJB 3.0について
このトピックでは、セッションBean、メッセージドリブンBeanおよびエンティティBean内の特定の違いを含む、EJB 3.0と以前のバージョンとの主な違いについて説明します。
EJB 3.0と以前のバージョンとの主な違いは、次のとおりです。
-
EJBの簡素化: EJB 3.0では、ホーム・インタフェースおよびコンポーネント・インタフェースが不要であり、javax.ejb.EnterpriseBeanインタフェースを実装するためのBeanクラスの要件もありません。EJB Beanクラスは完全なJavaクラス(多くの場合POJOと呼ばれる)となり、インタフェースは単純なビジネス・インタフェースとなります。Beanクラスはビジネス・インタフェースを実装できます。
-
デプロイメント・ディスクリプタに代わる注釈の使用: デプロイメント・ディスクリプタのかわりにメタデータ注釈が使用されています。注釈を使用すると、Beanタイプ、トランザクションまたはセキュリティ設定などの様々な属性、環境のO-Rマッピングとインジェクションまたはリソース参照を指定できます。デプロイメント・ディスクリプタを使用すると、メタデータ注釈を上書きできます。
-
依存性インジェクション: EJB環境の参照と使用およびリソース参照のためのAPIが簡素化され、かわりに依存性インジェクションが使用されています。依存性インジェクションにはメタデータ注釈が使用されています。
-
ライフサイクル・メソッドおよびコールバック・リスナー・クラスの拡張: 以前のバージョンのEJBと異なり、Bean開発者は不要なコールバック・メソッドをすべて実装する必要はありませんが、ライフサイクル・イベントの通知を受信するためのコールバック・メソッドとして、任意のメソッドを指定できます。同じBeanクラスで定義されているコールバック・メソッドのかわりに、コールバック・リスナー・クラスを使用することもできます。
-
インターセプタ: インターセプタは、ビジネス・メソッドのコールを捕捉するメソッドです。インターセプタ・メソッドは、ステートレス・セッションBean、ステートフル・セッションBeanまたはメッセージドリブンBeanで定義されます。Beanクラスでインターセプタ・メソッドを定義するかわりに、インターセプタ・クラスを使用することもできます。
-
EJBのJNDI参照の簡素化: EJBの参照が簡素化されたため、EJBでcreateメソッドを呼び出すことでクライアントはBeanインスタンスを作成する必要がなくなり、EJBでメソッドを直接呼び出すことができます。
セッションBean
-
Beanの簡素化: セッションBeanは完全なJavaクラスであり、javax.ejb.SessionBeanインタフェースを実装する必要がありません。ホーム・インタフェースはオプションです。セッションBeanには、リモートまたはローカル(あるいはその両方)のインタフェースがあり、これらのインタフェースはEJBObjectまたはEJBLocalObjectを拡張する必要はありません。
-
メタデータ注釈: メタデータ注釈は、BeanまたはインタフェースおよびセッションBeanのランタイム・プロパティを指定するために使用されます。たとえば、セッションBeanは、Beanタイプを指定するために@Statelessまたは@Statefulでマークされます。
-
ライフサイクル・メソッドおよびコールバック・リスナー: コールバック・リスナーは、ステートフル・セッションBeanとステートレス・セッションBeanの両方でサポートされます。これらのコールバック・メソッドは、注釈またはデプロイメント・ディスクリプタを使用して指定できます。
-
依存性インジェクション: 依存性インジェクションは、ステートフルまたはステートレス・セッションBeanから使用できます。開発者は、メタデータ注釈またはデプロイメント・ディスクリプタのいずれかを使用して、リソース、EJBコンテキストまたは環境エントリを挿入できます。
-
インターセプタ: インターセプタ・メソッドまたはインターセプタ・クラスは、ステートフルとステートレスの両方のセッションBeanでサポートされます。
メッセージドリブンBean
-
Beanの簡素化: メッセージドリブンBeanはjavax.ejb.MessageDrivenインタフェースを実装する必要がなく、javax.jms.MessageListenerインタフェースを実装します。
-
メタデータ注釈: メタデータ注釈は、BeanまたはインタフェースおよびMDBのランタイム・プロパティを指定するために使用されます。たとえば、MDBは、Beanタイプを指定するために@MessageDrivenでマークされます。
-
ライフサイクル・メソッドおよびコールバック・リスナー: コールバック・リスナーは、MDBでサポートされます。これらのコールバック・メソッドは、注釈またはデプロイメント・ディスクリプタを使用して指定できます。
-
依存性インジェクション: 依存性インジェクションは、MDBから使用できます。開発者は、メタデータ注釈またはデプロイメント・ディスクリプタのいずれかを使用して、MDBで使用されるリソース、EJBコンテキストまたは環境エントリを挿入できます。
-
インターセプタ: インターセプタ・メソッドまたはインターセプタ・クラスは、MDBで使用できます。
エンティティBean/永続性API
-
Beanの簡素化(POJO永続性): EJB 3.0ではエンティティBeanが大幅に簡素化され、POJO永続性モデルが標準化されます。エンティティBeanは具体的なJavaクラスであり、インタフェースは不要です。エンティティBeanクラスはポリモフィズムと継承をサポートします。エンティティには様々なタイプの関連を設定でき、コンテナ管理の関連性は開発者によって手動で管理されます。
-
EntityManager API: EJB 3.0では、エンティティの作成、検索、削除および更新に使用されるEntityManager APIが導入されます。EntityManager APIは、Value Objectパターンに似たエンティティBeanインスタンスの連結解除/マージの概念を導入します。Beanインスタンスは連結解除され、クライアントによってローカルで更新された後EntityManagerに戻され、データベースとマージ/同期化されます。
-
メタデータ注釈: メタデータ注釈は、デプロイメント・ディスクリプタの要件を削除することで、エンティティの開発を大幅に簡素化します。エンティティ注釈は、エンティティBeanになるクラスを指定するために使用されます。注釈は、トランザクション属性、セキュリティ権限、コールバック・リスナーおよび注釈付き問合せを指定するために使用されます。
-
問合せ言語の強化: EJB 3.0では、エンティティの問合せ機能が大幅に向上されます。バルク更新と削除、JOIN操作、GROUP BY HAVING、投影、サブ問合せなどの追加操作によりEJB-QLを強化します。EJB QLを使用して動的問合せを作成することもできます。
-
ライフサイクル・メソッドおよびコールバック・リスナー: コールバック・リスナーは、エンティティBeanでサポートされます。これらのコールバック・メソッドは、注釈またはデプロイメント・ディスクリプタを使用して指定できます。
関連項目
EJBについて
Enterprise JavaBeansおよびJDeveloperについて
Copyright © 1997, 2007, Oracle. All rights reserved.