30.6.3. EJB-QL を SQL マッピングにオーバーライド

EJB-QL クエリは jbosscmp-jdbc.xml ファイルでオーバーライドできます。finder、または select は EJB-QL 宣言に必要ですが、ejb-ql 要素は空のままにして構いません。現在、SQL は JBossQL、DynamicQL、DeclaredSQL、または BMP スタイルカスタムの ejbFind メソッドでオーバーライドできます。EJB-QL のオーバーライドは EJB の仕様に対して規格外の拡張子であるため、この拡張子を使用するとアプリケーションのポータビリティ(移植性)が制限されます。BMP カスタムファインダーを除く EJB-QL のオーバーライドはすべて、jbosscmp-jdbc.xml ファイルの query 要素を使用して宣言されます。コンテンツモデルを 図30.11「jbosscmp-jdbc query 要素のコンテンツモデル」に示します。
jbosscmp-jdbc query 要素のコンテンツモデル

図30.11 jbosscmp-jdbc query 要素のコンテンツモデル

  • description: クエリに対するオプションの記述子です。
  • query-method: 必須の要素で、設定するクエリメソッドを指定します。これは ejb-jar.xml ファイルでこのエンティティに対して宣言された query-method と一致する必要があります。
  • jboss-ql: EJB-QL クエリの代わりに使用される JBossQL クエリです。JBossQL ついては 「JBossQL」で説明します。
  • dynamic-ql:メソッドがダイナミッククエリであり、EJB-QL クエリではないことを示します。ダイナミッククエリについては、「DynamicQL」で説明しています。
  • declared-sql: このクエリは EJB-QL の代わりに宣言した SQL を使用します。宣言した SQL については、「DeclaredSQL」で説明しています。
  • read-ahead: この任意の要素により、クエリで参照したエンティティ付きで使用する追加フィールドのロードを最適化します。これについては、「最適化ローディング」で詳しく説明しています。