コンテナがデータベースにデータを追加するときに呼び出すメソッドです。
Entity Beanを呼び出すEJBアプリケーションがcreateメソッドを呼び出すと、コンテナはcreateメソッドに対応するejbCreateメソッドを呼び出します。ejbPostCreateメソッドは、ejbCreateメソッドが呼び出された後コンテナによって呼び出されます。
記述する処理の概要
一般的に、ejbCreateメソッドには、以下の処理を記述します。
永続化フィールドを入力引数で初期化する処理
データベースにレコードを挿入(INSERT)する処理
プライマリキーオブジェクトを作成して返却する処理
ejbPostCreateメソッドには通常、処理を記述する必要はありません。
ejbCreateメソッドの規約
ejbCreateメソッドは以下の規約を満たしていなければなりません。
メソッド名はejbCreateでなければなりません。
EJB2.0規約以降に準拠したEJBアプリケーションでは、Homeインタフェースにcreateで始まる任意の名前を記述できます。
この場合、ejbCreate<任意の名前>でなければなりません。
メソッドはpublicとして定義されていなければなりません。
返却値はプライマリキータイプでなければなりません。
メソッドの引数は、RMI over IIOPの規約に従わなくてはなりません。
また、引数のタイプと数はHomeインタフェースのcreateメソッドに一致していなければなりません。
throws句には以下の例外を定義できます。
任意のEJBアプリケーション固有の例外
javax.ejb.EJBException
javax.ejb.CreateException
javax.ejb.DuplicateKeyException
ejbPostCreateメソッドの規約
ejbPostCreateメソッドは以下の規約を満たしていなければなりません。
メソッド名はejbPostCreateでなければなりません。
EJB2.0規約以降に準拠したEJBアプリケーションでは、Homeインタフェースにcreateで始まる任意の名前を記述できます。
この場合、ejbPostCreate<任意の名前>でなければなりません。
メソッドはpublicとして定義されていなければなりません。
返却値はvoidでなければなりません。
メソッド引数は、対応するejbCreateメソッドの引数と同じでなければなりません。
throws句には以下の例外を定義できます。
任意のEJBアプリケーション固有の例外
javax.ejb.EJBException
javax.ejb.CreateException
javax.ejb.DuplicateKeyException
記述例
public SampleBeanPrimaryKey ejbCreate(Integer codeValue, String nameValue, String descValue) throws javax.ejb.CreateException, javax.ejb.EJBException { // 永続化フィールドの初期化 code = codeValue; name = nameValue; desc = descValue; Connection connection = null; PreparedStatement psInsert = null; int rows = 0; try { // データベースへレコードを追加する connection = dataSource.getConnection(); psInsert = connection.prepareStatement( "INSERT INTO SAMPLESCM.SAMPLETBL(ID,NAME,DESC) VALUES(?,?,?)"); psInsert.setObject(1,code); psInsert.setString(2,name); psInsert.setString(3,desc); rows = psInsert.executeUpdate(); } catch(SQLException e) { throw new EJBException(e.getMessage()); } finally { try { if (psInsert != null) psInsert.close(); if (connection != null) connection.close(); } catch(Exception e) {} } // プライマリキーオブジェクトの作成 SampleBeanPrimaryKey pk = new SampleBeanPrimaryKey(); pk.code = code; return pk; } public void ejbPostCreate(Integer codeValue, String nameValue, String descValue) throws javax.ejb.CreateException, javax.ejb.EJBException { }