outsideSqlDefinitionMap

outsideSqlDefinitionMapとは?

外だしSQLについての設定を行うDBFluteプロパティ。DBFluteクライアントの dfprop 配下の outsideSqlDefinitionMap.dfprop という名前のテキストファイルです。主に Sql2Entityタスク にて参照されます。

プロシージャ対応クラスの自動生成

以下のプロパティで、プロシージャ対応のParameterBeanを自動生成するか否かを指定できます。

自動生成対象プロシージャの調整

以下のプロパティで、どのプロシージャを自動生成対象とするか調整できます。

これらプロパティを複合して利用する場合は、AND条件として判定されます。

これらプロパティが利用できるかどうかは、DBMS(JDBCドライバ)に依存します。

プロパティ

map型プロパティ で、様々な key-value 形式のプロパティを定義します。

isGenerateProcedureParameterBean

プロシージャ対応の ParameterBean を自動生成するか否かを指定します。

値候補
true or false
デフォルト
false
補足
  • プロシージャをアプリから呼び出すかどうか不明のため、デフォルトは false
  • 指定されたスキーマで認識できる全てのプロシージャを対象とする(別途、設定あり)

isGenerateProcedureCustomizeEntity

プロシージャが戻す ResultSet 対応の CustomizeEntity を自動生成するか否かを指定します。 このプロパティを true に設定すると、Sql2Entityタスクにおいて、実際にプロシージャが実行されます。

値候補
true or false
デフォルト
false
補足
  • プロシージャを(気軽に)実行しても大丈夫なのかどうか不明のため、デフォルトは false
  • 指定されたスキーマで認識できる全てのプロシージャを対象とする(別途、設定あり)

targetProcedureCatalogList

自動生成対象とするプロシージャのカタログを指定します。

targetProcedureCatalogListの仕様 @outsideSqlDefinitionMap.dfprop
map:{
    ; targetProcedureCatalogList = list:{[catalog-list]}
}
値候補
カタログ名のリスト
デフォルト
なし
補足
  • isGenerateProcedureParameterBeanを有効にしている場合のみ有効
  • 前方一致: "prefix:前方一致させる文字列" という形式で指定
  • 後方一致: "suffix:後方一致させる文字列" という形式で指定
  • 中間一致: "contain:中間一致させる文字列" という形式で指定
  • "無名のカタログ" を指定する場合は、$$DEFAULT$$ と指定

カタログの概念は、DBMSによって違うので注意。

targetProcedureSchemaList

自動生成対象とするプロシージャのスキーマを指定します。

targetProcedureSchemaListの仕様 @outsideSqlDefinitionMap.dfprop
map:{
    ; targetProcedureSchemaList = list:{[schema-list]}
}
値候補
スキーマ名のリスト
デフォルト
なし
補足
  • 基本的に、targetProcedureCatalogListと同様の補足
  • "無名のスキーマ" を指定する場合は、$$DEFAULT$$ と指定

スキーマの概念は、DBMSによって違うので注意。

targetProcedureNameList

自動生成対象とするプロシージャの名前を指定します。

targetProcedureNameListの仕様 @outsideSqlDefinitionMap.dfprop
map:{
    ; targetProcedureNameList = list:{[name-list]}
}
値候補
プロシージャ名のリスト
デフォルト
なし
補足
  • targetProcedureCatalogListと同様の補足
  • フルネームのプロシージャ名も指定可能 e.g. [スキーマ名].[プロシージャ名]
  • "無名のカタログやスキーマ" の指定はできない。$$DEFAULT$$.[プロシージャ名] は不可

Oracleのデータベースリンク先のプロシージャの ProcedurePmb を自動生成対象にする場合も、このプロパティが利用されます。

executionMetaProcedureNameList

プロシージャの ResultSet のメタデータを取得する(isGenerateProcedureCustomizeEntityの対象とする)プロシージャの名前を指定します。

値候補
プロシージャ名のリスト
デフォルト
なし

指定の仕方は、targetProcedureNameList プロパティと同様です。

procedureSynonymHandlingType

プロシージャ参照のシノニムも自動生成対象とするか否か、対象とする際のタイプを指定します。

値候補
NONE (対象外)、INCLUDE (対象)、SWITCH (プロシージャ参照のシノニムのみ対象)
デフォルト
NONE
補足
  • シノニムの自動生成設定が有効になっている場合のみ有効
  • シノニムをサポートしているDBMSのみ有効
  • INCLUDEで、別スキーマ同名ならメインスキーマ優先、同スキーマ同名ならプロシージャを優先
  • DBリンク経由のシノニムはサポート対象外
  • パッケージプロシージャ参照のシノニムはサポート対象外
現場フィット - シノニムの自動生成

isRequiredSqlTitle

外だしSQLの "SQLのタイトル" を書くことを強制するか否かを指定します。

(外だしSQL)現場フィット - 外だしSQLのタイトル

また、このプロパティを有効に設定して、タイトルが書かれていない外だしSQLが存在すると、OutsideSqlTestタスクのチェックで検知できます。

値候補
true or false
デフォルト
false
補足
  • EMechaデフォルト "SQL title here." も "書かれていない" として検知される (@since 1.0.4D)

isRequiredSqlDescription

外だしSQLの "SQLの説明" を書くことを強制するか否かを指定します。

(外だしSQL)現場フィット - 外だしSQLの説明

また、このプロパティを有効に設定して、説明が書かれていない外だしSQLが存在すると、OutsideSqlTestタスクのチェックで検知できます。

値候補
true or false
デフォルト
false
補足
  • EMechaデフォルト "SQL Description here." も "書かれていない" として検知される (@since 1.0.4D)

sqlFileEncoding

外だしSQLのSQLファイルのエンコーディングを指定します。外だしSQLの実装でSQLファイルを作成するときは、必ずここで指定されたエンコーディングで作成する必要があります。

値候補
エンコーディング (Javaで認識できるもの)
デフォルト
UTF-8

sqlDirectory

外だしSQLのSQLファイルが配置されているディレクトリを相対パスで指定します。ここに指定したディレクトリ配下から、外だしSQLファイルを探します。

SQLファイルが配置場所が、デフォルトの設定とは違う場合に有効です。

値候補
DBFluteクライアントディレクトリからの相対パス
デフォルト
*Sql2Entityのページを参照

アプリケーション外だしSQLを利用している場合は、このプロパティはDBFluteのライブラリプロジェクトのみのためのプロパティとなります。 その場合、アプリケーションごとに固有のSQLファイルが配置場所が別途プロパティにて定義されます。

sql2EntityOutputDirectory

Sql2Entityで自動生成するクラスの出力先ディレクトリを指定します。

値候補
DBFluteクライアントディレクトリからの相対パス
デフォルト
Generateタスクの出力先と同じ

アプリケーション外だしSQLを利用している場合は、このプロパティはDBFluteのライブラリプロジェクトのみのためのプロパティとなります。 その場合、アプリケーションごとに固有の出力先ディレクトリが別途プロパティにて定義されます。

applicationOutsideSqlMap

外だしSQLと外だしSQLから自動生成されるクラス(CustomizeEntityやParameterBeanなど)をDBFluteの自動生成ディレクトリではなく、 別アプリケーションの中で管理するためにアプリケーション情報を指定します。@since 0.9.8.2

DBFluteが Genearte で自動生成するクラスをライブラリプロジェクトとして管理し、それを参照するアプリケーションが複数存在して、 かつ、外だしSQLが多く実装されそうな場合に有効です。そのアプリ専用の外だしSQLがそのアプリ内で閉じて管理されることになります。

アプリケーション情報を指定すると、そのアプリの中で定義された外だしSQLが Sql2Entity や OutsideSqlTest などの対象となり、また、自動生成されるクラスもそのアプリ配下に出力されます。 (同時に、通常どおりにDBFluteの自動生成ディレクトリに配置するやり方も有効です)

e.g. applicationOutsideSqlMapの仕様 @outsideSqlDefinitionMap.dfprop
; applicationOutsideSqlMap = map:{
    ; [path relative to app project] = map:{
        ; sqlDirectory = [path] # デフォルト: src/main/java|resources
        ; sql2EntityOutputDirectory = [path] # デフォルト: src/main/java
    }
}
値候補
map型プロパティの中に、map型プロパティの key-value
デフォルト
なし
補足
  • Mapのキーは、DBFluteクライアントからのパス e.g. ../../app1
  • sqlDirectory は、Mapのキーとして指定されたアプリルートからのパス e.g. src/main/resource
  • sql2EntityOutputDirectory は、Mapのキーとして指定されたアプリルートからのパス e.g. src/main/java
e.g. web1とweb2プロジェクトを対象に (ディレクトリはデフォルト設定) @outsideSqlDefinitionMap.dfprop
; applicationOutsideSqlMap = map:{
    ; ../../web1 = map:{
        #; sqlDirectory = src/main/resources
        #; sql2EntityOutputDirectory = src/main/java
    }
    ; ../../web2 = map:{
        #; sqlDirectory = src/main/resources
        #; sql2EntityOutputDirectory = src/main/java
    }
}

sqlPackage

SQLファイルが配置されている基底のパッケージを指定します。ここに指定したパッケージ配下から、外だしSQLファイルを探します。

基本的に、一つのプロジェクトに一つのDBFluteクライアントしかない場合は、このプロパティを設定する必要はありません。 一つのプロジェクトに二つのDBFluteクライアントが存在する場合に、別のDBの方のSQLファイルを読み込まないようにするために利用します。

値候補
パッケージ名 ($$PACKAGE_BASE$$ が利用可能)
デフォルト
なし (sqlDirectory配下の全てのパッケージが対象)
補足
  • $$PACKAGE_BASE$$ は、basicInfoMap.dfpropの packageBase と解釈される
  • 複数クライアントでの衝突回避目的であれば、基本的に $$PACKAGE_BASE$$ でよい
  • BehaviorQueryPathの利用は、指定されたパッケージ配下の "exbhv" にて (詳細後述)
  • 指定されたパッケージのディレクトリは必ず存在する必要
  • DBFluteConfigの同名のコンフィグのデフォルト値となって適用される

BehaviorQueryPath を利用する場合は(これがDBFluteとしてメインのやり方)、指定されたパッケージ配下に "exbhv" パッケージを作成し、その配下に外だしSQLを配置します(その配下がBehaviorQueryPathの管理下となる)。 例えば foo.bar と指定した場合、MemberBhv_selectSimpleMember.sql は、foo.bar.exbhv パッケージ に作成します。

アプリケーション外だしSQLを利用している場合でも、このプロパティは全てのプロジェクトで共通です。 例えば foo.bar と指定した場合、DBFluteのライブラリプロジェクトでもアプリケーションでも foo.bar 配下に外だしSQLを配置する必要があります。(それぞれにディレクトリが存在する必要があります)