5 WebLogic Server のコ ンテナ管理 による永続性サービス
EJB 1. 1 CMP 用の WebLogic ク エ リ言語 (WLQL) の使用
EJB 1.1 CMP 用の WebLogic ク エ リ 言語 (WLQL) を使用する と 、 コ ンテナ管理に よ る永続性を利用する 1.1 エンテ ィ テ ィ EJB を ク エ リ で き ます。
weblogic-cmp-rdbms-jar.xmlフ ァ イ ルでは、 各 finder-queryス タ ンザには EJB を返すための ク エ リ を定義する WLQL 文字列が指定 さ れていなければな り ません。 EJB 向けの WLQL と それに対応するデプロ イ メ ン ト フ ァ イ ル (EJB 1.1 仕様に基づいた もの ) を使用し ます。
注意: 2.0 EJB の ク エ リ については、5-12 ページの 「EJB 2.0 用 EJB QL の使い
方」 を参照し て く だ さ い。 weblogic-ql ク エ リ を使用する と 、 elb-ql ク エ リ が完全にオーバ ラ イ ド さ れます。
WLQL 構文
WLQL 文字列では、 比較演算子用に次のプレ フ ィ ッ ク ス表記法を使用し ます。
(operator operand1 operand2)
追加の WLQL 演算子は、 単一のオペ ラ ン ド 、 テキ ス ト 文字列、 ま たはキーワー ド を受け付け ます。
5 WebLogic Server のコ ン テナ管理によ る永続性サービ ス
5-8 WebLogic エ ン タ ープ ラ イズ JavaBeans プ ログラ マーズガ イ ド
WLQL 演算子
次の表に、 有効な WLQL 演算子を示し ます。
演算子 説明 サンプル構文
= 等 し い (= operand1 operand2)
< よ り 小 さ い (< operand1 operand2)
> よ り 大 き い (> operand1 operand2)
<= 以下 (<= operand1 operand2)
>= 以上 (>= operand1 operand2)
! Boolean not (! operand)
& Boolean and (& operand)
| Boolean or (| operand)
like 指定 さ れたtext_string、 ま た は入力パ ラ メ ー タ中の % 記号に 基づいた ワ イ ル ド カー ド 検索
(like text_string%)
isNull 単一オペ ラ ン ド の値が NULL (isNull operand) isNotNull 単一オペ ラ ン ド の値が NULL 以
外
(isNotNull operand)
orderBy 指定 さ れたデー タベース カ ラ ム を基準に結果を並び替え る 注意: orderBy句には永続フ ァ
イ ル名ではな く 常にデー タ ベース カ ラ ム名を指定 す る。WebLogic Server はorderByに指定 さ れ た フ ァ イ ル名を変換 し な い
(orderBy 'column_name')
EJB 1.1 CMP 用の WebLogic ク エ リ 言語 (WLQL) の使用
WLQL オペラ ン ド
有効な WLQL オペラ ン ド は以下の と お り です。
別の WLQL 式
weblogic-cmp-rdbms-jar.xmlフ ァ イ ルの別の場所で定義さ れた コ ンテナ管 理フ ィ ール ド
注意: RDBMS カ ラ ム名は WLQL のオペラ ン ド と し て使用で き ません。 代わ
り に、weblogic-cmp-rdbms-jar.xmlの attribute-map に定義さ れて いる と お り 、 RDBMS カ ラ ムにマ ッ プ さ れる EJB 属性 ( フ ィ ール ド ) を使用し ます。
$nに よ っ て識別 さ れる フ ァ イ ンダ パ ラ メ ータ ま たは Java 式。nはパラ メ ー タ ま たは式の数です。 デフ ォル ト では、$nは、 フ ァ イ ンダ メ ソ ッ ド シグネ チ ャの n 番目のパ ラ メ ータ にマ ッ プ さ れます。 Java 式が組み込まれた よ り 高 度な WLQL 式を記述するには、$nを Java 式にマ ッ プ し ます。
注意: $n と い う 表記法は、 1 ではな く 0 で始ま る配列に基づいています。 た と えば、 フ ァ イ ンダの最初の 3 つのパラ メ ータは、$0、$1、 および
$2に対応し ています。 式は個々のパ ラ メ ータにマ ッ プ さ れる必要は あ り ません。 高度な フ ァ イ ンダは、 パラ メ ータ よ り 多 く の式を定義で き ます。
WLQL 式の例
次の コー ド 例は、weblogic-cmp-rdbms-jar.xmlフ ァ イ ルか ら基本的な WLQL 式を使用する部分を抜粋し た も のです。
desc 結果を降順に並び替え る。
orderBy と 組み合わせた場合に のみ使用
(orderBy 'column_name desc')
演算子 説明 サンプル構文
5 WebLogic Server のコ ン テナ管理によ る永続性サービ ス
5-10 WebLogic エ ン タ ープ ラ イズ JavaBeans プ ログラ マーズガ イ ド
こ の例では、 フ ァ イ ンダに指定さ れた balanceGreaterThanパ ラ メ ータ よ り 大きい balance属性を持つすべての EJB が返さ れます。 EJBHome 内のフ ァ
イ ンダ メ ソ ッ ド シグネチャは次の と お り です。
public Enumeration findBigAccounts(double balanceGreaterThan) throws FinderException, RemoteException;
<finder> ス タ ンザの例は次の と お り です。
<finder>
<method-name>findBigAccounts</method-name>
<method-params>
<method-param>double</method-param>
</method-params>
<finder-query><![CDATA[(> balance $0)]]></finder-query>
</finder>
balanceフ ィ ール ド は、 EJB の永続デプ ロ イ メ ン ト フ ァ イ ルの中の属性マ ッ プに定義する必要があ り ます。
注意: finder-query値のテキ ス ト は、 常に、 XML CDATA属性を使用し て定義 し て く だ さ い。CDATAを使用する と 、 WLQL 文字列中に特殊文字が入っ ていて も、 フ ァ イ ンダを コンパ イル し た と きにエ ラーが発生 し ない よ う にな り ます。
次に、 複雑な WLQL 式の使用例を示し ます。 文字列を区切る引用符 (') の使 い方に も注意し て く だ さ い。
<finder-query><![CDATA[(& (> balance $0) (! (= accountType 'checking')))]]></finder-query>
次の例では、 テーブル内のすべての EJB が検索さ れます。 こ の例では、 次の フ ァ イ ンダ メ ソ ッ ド シグネチャ を使用し ています。
public Enumeration findAllAccounts()
throws FinderException, RemoteException
<finder> ス タ ンザの例では、 空の WLQL 文字列が使用 さ れています。
<finder>
<method-name>findAllAccounts</method-name>
<finder-query></finder-query>
</finder>
次の ク エ リ では、lastName フ ィ ール ド が 「M」 で始ま るすべての EJB が検 索 さ れます。
<finder-query><![CDATA[(like lastName M%)]]></finder-query>
CMP 1.1 フ ァ イ ン ダ ク エ リ と し ての SQL の使用
次の ク エ リ では、 null のfirstNameフ ィ ール ド を持つすべての EJB が返 さ れ ます。
<finder-query><![CDATA[(isNull firstName)]]></finder-query>
次の ク エ リ では、 balance フ ィ ール ド が 5000 よ り 大きいすべての EJB が返 さ れ、 それ ら の Bean がデータベース カ ラ ム id に よ っ て ソ ー ト さ れます。
<finder-query><![CDATA[WHERE >5000 (orderBy 'id' (> balance 5000))]]></finder-query>
次の ク エ リ は前の例 と ほぼ同じ ですが、 EJB が降順で返 さ れます。
<finder-query><![CDATA[(orderBy 'id desc' (>
))]]></finder-query>