org.seasar.kuina.dao.internal.command
クラス AbstractDynamicQueryCommand

java.lang.Object
  上位を拡張 org.seasar.kuina.dao.internal.command.AbstractCommand
      上位を拡張 org.seasar.kuina.dao.internal.command.AbstractQueryCommand
          上位を拡張 org.seasar.kuina.dao.internal.command.AbstractDynamicQueryCommand
すべての実装されたインタフェース:
Command
直系の既知のサブクラス:
ConditionalQueryCommand, DtoQueryCommand, ExampleQueryCommand, FindAllQueryCommand, ParameterQueryCommand

public abstract class AbstractDynamicQueryCommand
extends AbstractQueryCommand

動的にJPQLを生成して問い合わせを行うCommandの共通機能を提供する抽象クラスです.

作成者:
koichik

フィールドの概要
protected  boolean distinct
          DaoメソッドにDistinctアノテーションが指定されていればtrue
protected static Map<String,JoinSpec> EMPTY_MAP
          空のMap
protected  FetchJoin[] fetchJoins
          フェッチ結合指定の配列
protected  String identificationVariable
          問い合わせ対象エンティティのidentification_variable
protected  OrderbySpec[] orderbySpecs
          ORDER BY指定の配列
 
クラス org.seasar.kuina.dao.internal.command.AbstractQueryCommand から継承されたフィールド
entityClass, flushMode, hints, method, resultList
 
コンストラクタの概要
AbstractDynamicQueryCommand(Class<?> entityClass, Method method, boolean resultList)
          インスタンスを構築します。
 
メソッドの概要
protected abstract  List<String> bindParameter(SelectStatement statement, Object[] arguments)
          Daoメソッドの引数をパラメータ値としてSELECT文にバインドします.
protected  Map<String,JoinSpec> createFetchJoinAssociations(String abstractSchemaName)
          フェッチ結合する関連のMapを返します.
protected  IdentificationVariableDeclaration createIdentificationVariableDeclaration(List<String> boundProperties)
          SELECT文のFROM句 (identification_variable_declaration) を作成して返します.
protected  Set<String> createJoinAssociations(List<String> boundProperties)
          結合する関連のSetを返します.
protected  SelectStatement createSelectStatement(Object[] arguments)
          SELECT文を作成して返します.
protected  boolean detectDistinct()
          DaoメソッドにDistinctアノテーションが指定されていればtrueを返します.
protected  FetchJoin[] detectFetchJoins()
          DaoメソッドにFetchJoinsアノテーションまたはFetchJoinアノテーションが指定されていれば,フェッチ結合指定の配列を返します.
protected  OrderbySpec[] detectOrderbySpec()
          DaoメソッドにOrderbyアノテーションが指定されていれば,ORDER BY指定の配列を返します.
 Object execute(EntityManager em, Object[] arguments)
          Daoのオペレーションを実行します.
 
クラス org.seasar.kuina.dao.internal.command.AbstractQueryCommand から継承されたメソッド
setupQuery, setupStatement
 
クラス org.seasar.kuina.dao.internal.command.AbstractCommand から継承されたメソッド
detectFlushMode, detectHints, getHintValue
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

EMPTY_MAP

protected static final Map<String,JoinSpec> EMPTY_MAP
空のMap


distinct

protected boolean distinct
DaoメソッドにDistinctアノテーションが指定されていればtrue


identificationVariable

protected String identificationVariable
問い合わせ対象エンティティのidentification_variable


fetchJoins

protected FetchJoin[] fetchJoins
フェッチ結合指定の配列


orderbySpecs

protected OrderbySpec[] orderbySpecs
ORDER BY指定の配列

コンストラクタの詳細

AbstractDynamicQueryCommand

public AbstractDynamicQueryCommand(Class<?> entityClass,
                                   Method method,
                                   boolean resultList)
インスタンスを構築します。

パラメータ:
entityClass - 問い合わせ対象のエンティティ・クラス
method - Daoメソッド
resultList - 問い合わせ結果をListで返す場合にtrue
メソッドの詳細

execute

public Object execute(EntityManager em,
                      Object[] arguments)
インタフェース Command の記述:
Daoのオペレーションを実行します.

パラメータ:
em - エンティティ・マネージャ
arguments - Daoのメソッド引数
戻り値:
Daoオペレーションの実行結果

detectDistinct

protected boolean detectDistinct()
DaoメソッドにDistinctアノテーションが指定されていればtrueを返します.

戻り値:
DaoメソッドにDistinctアノテーションが指定されていればtrue

detectFetchJoins

protected FetchJoin[] detectFetchJoins()
DaoメソッドにFetchJoinsアノテーションまたはFetchJoinアノテーションが指定されていれば,フェッチ結合指定の配列を返します.

DaoメソッドにFetchJoinsアノテーションもFetchJoinアノテーションお指定されていなければnullを返します.

戻り値:
フェッチ結合指定の配列

detectOrderbySpec

protected OrderbySpec[] detectOrderbySpec()
DaoメソッドにOrderbyアノテーションが指定されていれば,ORDER BY指定の配列を返します.

DaoメソッドにOrderbyアノテーションが指定されていなければnullを返します.

戻り値:
ORDER BY指定の配列
例外:
IllegalOrderbyException - Orderbyアノテーションのvalue要素の指定が不正な場合にスローされます

createSelectStatement

protected SelectStatement createSelectStatement(Object[] arguments)
SELECT文を作成して返します.

作成したSELECT文にDaoメソッドの引数をパラメータ値としてバインドします.

パラメータ:
arguments - Daoメソッドの引数
戻り値:
SELECT文

bindParameter

protected abstract List<String> bindParameter(SelectStatement statement,
                                              Object[] arguments)
Daoメソッドの引数をパラメータ値としてSELECT文にバインドします.

パラメータ:
statement - SELECT文
arguments - Daoメソッドの引数
戻り値:
バインドしたパラメータ名のList

createIdentificationVariableDeclaration

protected IdentificationVariableDeclaration createIdentificationVariableDeclaration(List<String> boundProperties)
SELECT文のFROM句 (identification_variable_declaration) を作成して返します.

パラメータ:
boundProperties - SELECT文にバインドしたパラメータ名のList
戻り値:
SELECT文のFROM句 (identification_variable_declaration)

createFetchJoinAssociations

protected Map<String,JoinSpec> createFetchJoinAssociations(String abstractSchemaName)
フェッチ結合する関連のMapを返します.

パラメータ:
abstractSchemaName - 問い合わせの基点となるエンティティのabstract_schema_name
戻り値:
フェッチ結合する関連のMap

createJoinAssociations

protected Set<String> createJoinAssociations(List<String> boundProperties)
結合する関連のSetを返します.

パラメータ:
boundProperties - SELECT文にバインドしたパラメータ名のList
戻り値:
結合する関連のSet


Copyright © 2006-2009 The Seasar Foundation. All Rights Reserved.