コンテナがデータベースにデータを追加するときに呼び出すメソッドです。
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
{
}