Package nablarch.core.db.dialect
Class H2Dialect
java.lang.Object
nablarch.core.db.dialect.DefaultDialect
nablarch.core.db.dialect.H2Dialect
- All Implemented Interfaces:
Dialect
H2用のSQL方言クラス。
このクラスは、1.4.191 および 2.1.214 により動作確認を行っている。
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionbuildSequenceGeneratorSql
(String sequenceName) シーケンスオブジェクトの次の値を取得するSQL文を構築する。convertPaginationSql
(String sql, SelectOption selectOption) SQL文を変換せずに返す。ping用のSQL文を返す。boolean
isDuplicateException
(SQLException sqlException) SQL例外が一意制約違反による例外か否か。boolean
isTransactionTimeoutError
(SQLException sqlException) SQL例外がトランザクションタイムアウトと判断すべき例外か否か。boolean
IDENTITY(オートインクリメントカラム)が使用できるか否か。boolean
batch insert時にIDENTITY(オートインクリメントカラム)が使用できるか否か。boolean
SQL文でのオフセット指定が使用できるか否かboolean
SEQUENCEが使用できるか否か。Methods inherited from class nablarch.core.db.dialect.DefaultDialect
convertCountSql, convertCountSql, getResultSetConvertor
-
Constructor Details
-
H2Dialect
public H2Dialect()
-
-
Method Details
-
supportsIdentity
public boolean supportsIdentity()IDENTITY(オートインクリメントカラム)が使用できるか否か。 H2では、IDENTITYカラムを使用できるため、true
を返す。- Specified by:
supportsIdentity
in interfaceDialect
- Overrides:
supportsIdentity
in classDefaultDialect
- Returns:
false
を返す。
-
supportsIdentityWithBatchInsert
public boolean supportsIdentityWithBatchInsert()batch insert時にIDENTITY(オートインクリメントカラム)が使用できるか否か。 H2では、batch insertでIDENTITYカラムが使用できるため、true
を返す。- Specified by:
supportsIdentityWithBatchInsert
in interfaceDialect
- Overrides:
supportsIdentityWithBatchInsert
in classDefaultDialect
- Returns:
false
を返す。
-
supportsSequence
public boolean supportsSequence()SEQUENCEが使用できるか否か。 H2では、シーケンスオブジェクトが使用できるので、true
を返す。- Specified by:
supportsSequence
in interfaceDialect
- Overrides:
supportsSequence
in classDefaultDialect
- Returns:
false
を返す。
-
supportsOffset
public boolean supportsOffset()SQL文でのオフセット指定が使用できるか否か H2では、offset
がサポートされるのでtrue
を返す。- Specified by:
supportsOffset
in interfaceDialect
- Overrides:
supportsOffset
in classDefaultDialect
- Returns:
false
を返す。
-
isDuplicateException
SQL例外が一意制約違反による例外か否か。SQLException.getSQLState()
が23505(unique_violation:一意制約違反)の場合、一意制約違反とする。- Specified by:
isDuplicateException
in interfaceDialect
- Overrides:
isDuplicateException
in classDefaultDialect
- Parameters:
sqlException
- SQL例外- Returns:
false
を返す。
-
isTransactionTimeoutError
SQL例外がトランザクションタイムアウトと判断すべき例外か否か。 H2の場合、以下例外の場合タイムアウト対象の例外として扱う。- SQLState:57014(クエリタイムアウト時に送出される例外コード)
- SQLState:HYT00(ロック試行タイムアウト時に送出される例外コード)
- Specified by:
isTransactionTimeoutError
in interfaceDialect
- Overrides:
isTransactionTimeoutError
in classDefaultDialect
- Parameters:
sqlException
- SQL例外- Returns:
false
を返す。
-
buildSequenceGeneratorSql
シーケンスオブジェクトの次の値を取得するSQL文を構築する。 シーケンス採番はサポートしない。nextval
関数を使用して、次の順序を取得するSQL文を構築する。- Specified by:
buildSequenceGeneratorSql
in interfaceDialect
- Overrides:
buildSequenceGeneratorSql
in classDefaultDialect
- Parameters:
sequenceName
- シーケンス名- Returns:
- シーケンスオブジェクトの次の値を取得するSQL文
-
convertPaginationSql
SQL文を変換せずに返す。offset
とlimit
を使用したSQL文に変換する。- Specified by:
convertPaginationSql
in interfaceDialect
- Overrides:
convertPaginationSql
in classDefaultDialect
- Parameters:
sql
- SQL文selectOption
- 検索時のオプション- Returns:
- 変換したSQL文
-
getPingSql
Description copied from class:DefaultDialect
ping用のSQL文を返す。 データベースへの死活チェックを行うための、ping用SQL文を生成する。 デフォルト実装では、本メソッドはサポートしない。- Specified by:
getPingSql
in interfaceDialect
- Overrides:
getPingSql
in classDefaultDialect
- Returns:
- ping用のSQL文
-