Interstage Application Server J2EE ユーザーズガイド
目次 索引 前ページ次ページ

第3部 EJB編> 第9章 EJBサービスの機能> 9.2 Entity Beanの実行環境

9.2.7 EJB QL

 EJB QLとは、finderメソッドまたはejbSelectメソッドなど検索メソッドのクエリ文を定義するためのSQL92ベースの言語です。
 一般的に使用するSQLとの最大の違いは、SELECT型にEntity Beanの識別子だけが単独で指定されている場合に指定するOBJECTキーワードです。

 EJB QLは抽象スキーマ名に基づいて記述されるので、特定のデータベースに依存しない互換性があります。抽象スキーマ名は、CMP/CMRフィールドに並んで抽象永続スキーマを構成する重要な構成要素です。


 抽象スキーマ名は、ejb-jar内で一意になるようにしてください。

 EJB QLを使用するには、deployment descriptor内の<query>タグにEJB QL文を記述します。
 EJBアプリケーションのdeployment descriptorの情報が定義されているファイル(ejb-jar.xml)は、XML形式で記述する必要があります。このため、ejb-jar.xmlを編集する場合は、XML形式の仕様に従ってください。

 特に以下の文字については、定義済み実体参照(暗黙定義エンティティ)で記述してください。

 EJB QLが使用できるのは、CMP2.0のEntity Beanです。

ejb-jar.xmlを編集する場合

編集する文字

定義済み実体参照

<

&lt;

>

&gt;

&

&amp;

'

&apos;

"

&quot;

 EJB QLでは、EJB規約に準拠した以下が使用できます。

 EJB QL文とは、SELECT句、FROM句、WHERE句を使用して1つまたは複数のEJBオブジェクトを検索するクエリ文であり、SELECT句とFROM句の定義は必須です。このEJB QL文はコンテナによって解析され、適切なデータベースクエリ言語に翻訳されます。

【SELECT句】

返却値の値としてOBJECT(Entity Bean)、またはパス式を使ってCMF、CMRフィールドを指定します。

【FROM句】

EJBアプリケーションのクラス名ではなく、Entity Bean内に記述された一意の“抽象スキーマ名”を指定します。

【WHERE句】

検索条件の指定を行います。例えば ?1は、検索メソッドのパラメタの1番目を意味します。
Entity Beanの検索メソッドにはfinderメソッド、またはejbSelectメソッドがあります。それぞれの検索メソッドにおいてメソッド名、パラメタの型を指定してください。
また、メソッドの返却値の型をマッピングするために、結果のタイプにLocalまたはRemote要素を指定します。デフォルト値はLocalです。

 EJB QLおよびEJB QL拡張で使用できる機能は、以下です。

EJB QL構文

基本

拡張

説明

データ操作文

SELECT句

クエリに返却するオブジェクトまたは値を指定します。

FROM句

SELECT句およびWHERE句内で指定した値の取得場所を指定します。

WHERE句

クエリによって返却される値を制限するための条件を指定します。

ORDER BY句

×

クエリによって返却される結果をソートします。

SELECT句の返却値

パス式(CMF/CMR)

単一またはコレクションの値を持つ式です。

OBJECT(Entity Bean)

SELECT句にEntity Beanの識別子だけが、単独で指定されている場合に指定します。

集合関数

MAX

×

集合で一番大きな値を返却します。

MIN

×

集合で一番小さな値を返却します。

SUM

×

集合の合計値を返却します。

AVG

×

集合の平均値を返却します。

COUNT

×

集合の要素数を返却します。

条件式

比較式

指定した2つの値を比較して評価します。

BETWEEN式

値が指定した範囲内に含まれるかを評価します。

LIKE式

LIKEに続く文字列が合致するかを評価します。

IN式

値が含まれているかどうかを評価します。

NULL比較式

値がNULL値かを評価します。

空コレクション比較式 (EMPTY比較式)

コレクション値を持つパス式が要素をもつかを評価します。

コレクションメンバ式 (MEMBER式)

値がコレクションのメンバであるかを評価します。

演算子

ナビゲーション演算子

. (ピリオド)

関係を辿るシンボルです。

算術演算子

+ - (単項)

+:指定した値は正の値です。
−:指定した値は負の値です。

* / (乗算 除算)

*:指定した値を乗算します。
/:指定した値を除算します。

+ - (加算 減算)

+:指定した値を加算します。
-:指定した値を減算します。

比較演算子

=

“=”の左辺の値と右辺の値が等しい場合に真となり、等しくない場合に偽となります。

<>

“<>”の左辺の値と右辺の値が等しくない場合に真となり、等しい場合に偽となります。

<

“<”の左辺の値が右辺の値より小さい場合に真となり、大きいまたは等しい場合に偽となります。

>

“>”の左辺の値が右辺の値より大きい場合に真となり、小さいまたは等しい場合に偽となります。

<=

“<=”の左辺の値が右辺の値より小さいまたは等しい場合に真となり、大きい場合に偽となります。

>=

“>=”の左辺の値が右辺の値より大きいまたは等しい場合に真となり、小さい場合に偽となります。

論理演算子

NOT

“NOT”に導かれる式が真の場合に偽となり、偽の場合には真となります。

AND

“AND”の左辺および右辺が真の場合に真となり、そうでない場合には偽となります。

OR

“OR”の左辺または右辺のいずれかが真の場合に真となり、左辺および右辺が偽の場合には偽となります。

関数式

文字列式

CONCAT

引数で与えられた文字列を結合した値を求めます。

SUBSTRING

指定した文字列の部分列を求めます。

LOCATE

条件に指定した文字列の位置を求めます。

LENGTH

文字数またはバイト数を求めます。

算術式

ABS

引数に指定した値に対する“絶対値”を求ます。

SQRT

検索条件に指定した値の平方根を求めます。

MOD

×

検索条件に指定した値の余剰を求めます。

○:指定可能
×:指定不可

EJB QL基本

 EJB QL基本ではSELECT句、FROM句、WHERE句を使用したデータ操作ができます。また、データを編集して返却する演算子が使用できます。

 より詳細なEJB QLの使用方法については、EJB2.0の規約を参照してください。

【使用例】


 演算子を使用したEJB QL文の例です。

SELECT句

WHERE句

 FROM句で検索された値に対しWHERE句を使用して、いろいろな条件テストが指定できます。

EJB QL拡

 EJB QL拡張は、EJB2.0で使用できる機能に加えて以下が拡張されています。

 より詳細なEJB QL拡張の使用方法については、EJB2.1の規約を参照してください。

【使用例】


 演算子を使用したEJB QL文の例です。


 使用するDBMSがSymfowareの場合、以下に注意してください。


 使用するDBMSがPostgreSQLの場合、以下に注意してください。


目次 索引 前ページ次ページ

All Rights Reserved, Copyright(C) 富士通株式会社 2005