SqlManager 
SqlManagerはSQLファイルを管理するクラスです。2つのクラスが提供されています。
| クラス | 説明 | 
|---|---|
| SqlManagerImpl | java.ioを利用したファイルアクセスを行うSqlManagerクラス。 | 
| NioSqlManagerImpl | java.nioを利用したファイルアクセスを行うSqlManagerクラス | 
クラスの特徴比較
| 特徴 | SqlManagerImpl | NioSqlManagerImpl | 補足 | 
|---|---|---|---|
| SQLファイルルートフォルダ設定 | 〇 | 〇 | |
| SQLファイルエンコーディング設定 | 〇 | 〇 | |
| 起動時のファイルキャッシュ | 〇 | △ | NioSqlManagerImplはファイルパスのみキャッシュ | 
| 遅延ファイルキャッシュ | × | 〇 | |
| jarファイル中のSQL参照 | 〇 | 〇 | |
| zipファイル中のSQL参照 | × | 〇 | |
| カスタムファイルアクセス対応 | × | 〇 | java.nio.fileパッケージを使用 | 
| ファイル変更検知 | × | 〇 | |
| DB種類毎のファイルパス切り替え | × | 〇 | 
利用用途に応じてSqlManagerを選択してください。
 SqlManagerクラスの切り替えはビルダーAPIで行うことが出来ます。指定しない場合の初期値はSqlManagerImplになります。
SqlConfig config = UroboroSQL.builder(...)
  // NioSqlManagerの指定
  .setSqlManager(new NioSqlManagerImpl(false)).build();SQLファイルルートフォルダの設定 
uroboroSQLは初期設定ではクラスパス上にあるsqlフォルダ配下のSQLを読み込みます。
 このSQLファイルルートフォルダは変更することができます。
SQLファイルルートフォルダの設定 (custom_sqlフォルダを指定)
// SqlManagerImplの場合
SqlConfig config = UroboroSQL.builder(...)
  // SQLファイルのルートフォルダの設定(custom_sqlフォルダをルートフォルダにする場合)
  .setSqlManager(new SqlManagerImpl("custom_sql")).build();
// NioSqlManagerImplの場合
SqlConfig config = UroboroSQL.builder(...)
  // SQLファイルのルートフォルダの設定(custom_sqlフォルダをルートフォルダにする場合)
  .setSqlManager(new NioSqlManagerImpl("custom_sql")).build();Spring bootでの利用 NioSqlManagerImplのみ 
v0.20.5まで 
Spring boot利用時に実行可能jarにSQLファイルをリソースとして含める場合には、NioSqlManagerImplの場合、パスの指定を変更する必要があります。
例えば、classpath:sqlにSQLファイルを配置している場合は、実行可能jarで起動する際にはアプリケーション設定を利用して BOOT-INF/classes/sql のように指定してください。 なお、v0.20.5までのバージョンでは、 BOOT-INF/lib 配下のjarに含まれるSQLの読み込みができませんので、v0.21.0以降へのバージョンアップを検討してください。
v0.21.0以降 
v0.20.5までのように、実行可能jarかどうかで設定を変える必要はありません。
 実行可能jarかどうかに問わず、クラスパス配下のjarのリソースを探索するように変更されているため、 BOOT-INF/classes 、 BOOT-INF/lib のどちらに含まれているSQLファイルも読み込みが可能です。
DB種類毎のファイルパス切り替え NioSqlManagerImplのみ 
後述するDialectを利用して、1つのSQL名に対してDB種類毎にファイルパスを切り替えることが出来ます。
以下のようなファイル構成を例として説明します。
sql
  ├─employee
  │    └─select_employee.sql  -- Oracle, postgresql以外のDB用SQL
  ├─oracle
  │   └─employee
  │        └─select_employee.sql  -- oracle DB用SQL
  └─postgresql
      └─employee
           └─select_employee.sql  -- postgresql DB用SQLSQL名としてemployee/select_employeeを指定した場合、
 Oracle DBの場合はsql/oracle/employee/select_employee.sqlが読み込まれます。
 同様にPostgresql DBの場合はsql/postgresql/employee/select_employee.sqlが読み込まれます。
 DBに対するDialect用のフォルダがない場合は通常通りsql/employee/select_employee.sqlが読み込まれます。
DB毎のフォルダ名
| DB名 | フォルダ名 | 
|---|---|
| H2 DB | h2 | 
| Microsoft SQL Server | mssql | 
| MySQL | mysql | 
| Oracle | oracle | 
| Postgresql | postgresql | 
| その他 | default | 
SQLファイルの更新監視 NioSqlManagerImplのみ 
NioSqlManagerImplでは、最初にSQLファイルの呼び出しがあったタイミングでSQLファイルをロードし、メモリ内にSQLをキャッシュします。 ファイル監視を有効にしている場合はキャッシュしているファイルに対してjava.nio.file.WatchServiceを利用したファイル監視を行い、 更新があった場合は自動的にリロードする仕組みを提供しています。
WARNING
ファイル監視を行うのはファイルシステム上のファイルについてのみでjarファイルやzipファイル内のファイルに対してはファイル監視は行いません。
アプリケーションの開発中など頻繁にSQLファイルを更新する場合に有効です。
 ファイル監視の有無はNioSqlManagerImplの設定時に行います。
// NioSqlManagerImplの場合
SqlConfig config = UroboroSQL.builder(...)
  // SQLファイル監視を有効化(初期値はfalse)
  .setSqlManager(new NioSqlManagerImpl(true)).build();