Skip to content

SqlResourceManager

SqlResourceManagerはSQLファイルを管理するクラスです。

クラス名の変更

uroborosql v1.x で SqlManager から SqlResourceManagerにクラス名が変更されました。

SqlResourceManagerの具象クラスとしてSqlResourceManagerImplクラスが提供されています。

クラス説明
SqlResourceManagerImpljava.nioを利用したファイルアクセスを行うSqlResourceManagerクラス

SqlResourceManagerImplクラスの特徴

  • SQLファイルルートフォルダ設定
  • SQLファイルエンコーディング設定
  • 起動時のファイルパスキャッシュ
  • 遅延ファイルキャッシュ
  • jarファイル中のSQL参照
  • zipファイル中のSQL参照
  • カスタムファイルアクセス対応(java.nio.fileパッケージを使用)
  • DB種類毎のファイルパス切り替え

SQLファイルルートフォルダの設定

uroboroSQLは初期設定ではクラスパス上にあるsqlフォルダ配下のSQLを読み込みます。
このSQLファイルルートフォルダは変更することができます。

SQLファイルルートフォルダの設定 (custom_sqlフォルダを指定)

java
// SqlResourceManagerImplの場合
SqlConfig config = UroboroSQL.builder(...)
  // SQLファイルのルートフォルダの設定(custom_sqlフォルダをルートフォルダにする場合)
  .setSqlResourceManager(new SqlResourceManagerImpl("custom_sql")).build();

DB種類毎のファイルパス切り替え

後述するDialectを利用して、1つのSQL名に対してDB種類毎にファイルパスを切り替えることが出来ます。

以下のようなファイル構成を例として説明します。

txt
sql
  ├─employee
  │    └─select_employee.sql  -- Oracle, postgresql以外のDB用SQL
  ├─oracle
  │   └─employee
  │        └─select_employee.sql  -- oracle DB用SQL
  └─postgresql
      └─employee
           └─select_employee.sql  -- postgresql DB用SQL

SQL名として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 DBh2
Microsoft SQL Servermssql
MySQLmysql
Oracleoracle
Postgresqlpostgresql
その他default