outsideSqlMap
Java6版までは、outsideSqlDefinitionMap という名前でした。(古い名前でも動きます)
- outsideSqlMapとは?
- プロパティ
- isGenerateProcedureParameterBean
- isGenerateProcedureCustomizeEntity
- targetProcedureCatalogList
- targetProcedureSchemaList
- targetProcedureNameList
- executionMetaProcedureNameList
- procedureSynonymHandlingType
- isRequiredSqlTitle
- isRequiredSqlDescription
- sqlFileEncoding
- sqlDirectory
- sql2EntityOutputDirectory
- applicationOutsideSqlMap
- sqlPackage
outsideSqlMapとは?
外だしSQLについての設定を行うDBFluteプロパティ。DBFluteクライアントの dfprop 配下の outsideSqlMap.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が存在すると、OutsideSqlTestタスクのチェックで検知できます。
- 値候補
- true or false
- デフォルト
- false
- 補足
-
- EMechaデフォルト "SQL title here." も "書かれていない" として検知される (@since 1.0.4D)
isRequiredSqlDescription
外だし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ファイルを探します。
ここで言うディレクトリは、ソースディレクトリ(Javaで言うclasspath対象のディレクトリ)を指します。 例えば、../src/main/java や ../src/main/resources のことです。
もし、../src/main/sql という独自のソースディレクトリに (パッケージにまとめられているかに関わらず) SQLファイルが配置されているのであれば、この sqlDirectory プロパティで指定します。
そのソースディレクトリ配下のサブディレクトリ(パッケージ)で外だしSQLを区別したいときは、sqlDirectoryプロパティではなく、sqlPackageプロパティになります。
- 値候補
- 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を配置する必要があります。(それぞれにディレクトリが存在する必要があります)