Cosminexus 機能解説

[目次][用語][索引][前へ][次へ]

5.13.5 Entity Bean(CMP)実装時の注意事項

Entity Bean(CMP)を実装するときの注意事項を示します。

<この項の構成>
(1) setEntityContextメソッドでのリソースマネジャへのアクセスについて
(2) ユーザ定義型のCMPフィールドの使用についての注意
(3) CMRフィールド使用時のトランザクションに関する注意
(4) CMRのcascade-deleteの使用についての注意
(5) プライマリキークラスへのインタフェース指定について

(1) setEntityContextメソッドでのリソースマネジャへのアクセスについて

EJB 1.1仕様およびEJB 2.0仕様では,setEntityContextメソッドでのリソースマネジャへのアクセスは許されていません。

(2) ユーザ定義型のCMPフィールドの使用についての注意

プライマリキーとして複合プライマリキーを使用する以外で,ユーザ定義型のCMPフィールドを使用できません。

(3) CMRフィールド使用時のトランザクションに関する注意

Collection型のCMRフィールドやCollection型のCMRフィールドのIteratorを使用する場合,CMRフィールドを取得したときのトランザクションの範囲内で,CMRフィールドやIteratorへアクセスできます。次のコーディング例のcallTeamメソッドでは,CMRフィールドのgetterメソッドであるgetPlayersメソッドと,それに続くIteratorを使用した操作をすべて同一トランザクション内で実行する必要があります([a]から[b]の間)。

   public void callTeam() {
             :
     //[a]
     Collection playersInTeam = team.getPlayers();
     Iterator i = playersInTeam.iterator();
     while (i.hasNext()) {
       LocalPlayer p = (LocalPlayer) i.next();
             :
     }
     //[b]
   }

このコーディング例をトランザクション外で実行した場合は,IllegalStateException例外が発生します。これを避けるために,トランザクション内で実行されるようにCMTなどで設定してください。

(4) CMRのcascade-deleteの使用についての注意

CMRのcascade-deleteを使用する場合,次の制限があります。

(5) プライマリキークラスへのインタフェース指定について

CMP Entity BeanのDDの<prim-key-class>タグにインタフェースおよび抽象クラスを指定した場合,デプロイ時にエラーメッセージKDJE42039-Eが出力され,デプロイ処理はエラー終了されます。