WebSphere Application Server Network Deployment for i5/OS, Version 6.1   
             オペレーティング・システム: i5/OS

             目次と検索結果のパーソナライズ化

EJB 照会のデータ型操作の規則

Enterprise JavaBean (EJB) 照会を使用して データ型を処理する場合は、 一定の規則に従う必要があります。 このセクションでは、その規則について説明します。

コンテナー管理パーシスタンス (CMP) フィールド型の規則

いずれの型の CMP フィールドも SELECT 文節では使用できます。 ただし、検索条件およびグループ化または順序付け操作で、以下の型のみのフィールドを使用する必要があります。

コンバーターと基本型

以下のすべての条件が生じた場合、 コンバーターの toData() メソッドが SQL 検索値の計算に使用されます。

例えば、整数値 10 をストリング値「Ten」にマップするコンバーターの場合、EJB 照会は以下のようになります。

e.cmp = 10

次の SQL 照会に変換されます。

column = 'Ten'

さらに複雑な述部を組み込むと、以下の例のようになります。

e.cmp * 10 >  e.salary

finder または select 照会では、「照会のプッシュダウンができません」というエラー・メッセージを受け取ります。 このような多機能照会には動的 EJB 照会サービスを使用します。動的照会ランタイムはアプリケーション・サーバーで述部を処理します。

全体的に、コンバーターは、等価性、照合シーケンス、およびヌル値を保存します。 コンバーターがこれらの要件に適合しない場合は、CMP フィールド比較演算に使用しないでください。

ユーザー型、コンバーター、およびコンポーザー

ユーザー型は比較演算または式に使用することができません。ただし、パス式にはユーザー型のサブ フィールドを使用することができます。 例えば、型が com.exam.Address である CMP addr フィールド、および番地、市区町村、および都道府県のサブフィールドを想定します。 この CMP フィールドの照会の以下の構文は無効です。

e.addr =  ?1

ただし、サブフィールドの 1 つを指定する照会は有効です。

e.addr.street = ?1

CMP フィールドは、Java シリアライゼーションを使用して SQL 列にマップできます。 通常、デプロイメント照会用の述部または式に CMP フィールドを使用することで、「照会のプッシュダウンができません」というエラー・メッセージが発生します。 動的照会ランタイムは、アプリケーション・サーバーでユーザー型のインスタンスすべてを読み取り、デシリアライズして、式を処理します。

ただし、この処理は負荷が高く、パフォーマンスが犠牲になります。 デプロイメント EJB 照会では、 コンポーザーを使用してパフォーマンスを維持することができます。 先の例では、バイナリー形式に addr フィールドをマップする場合、コンポーザーを使用して、各サブフィールドをデータベースのバイナリー列にマップします。




関連概念
EJB 照会言語
SQL との EJB 照会互換性問題
EJB 照会のデータベース制限
関連タスク
EJB 照会の使用
概念トピック    

ご利用条件 | フィードバック

最終更新: Jan 21, 2008 8:28:52 PM EST
http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.websphere.nd.iseries.doc/info/iseriesnd/ae/cque_datatyperules.html