Class H2Dialect

java.lang.Object
nablarch.core.db.dialect.DefaultDialect
nablarch.core.db.dialect.H2Dialect
All Implemented Interfaces:
Dialect

public class H2Dialect extends DefaultDialect
H2用のSQL方言クラス。 このクラスは、1.4.191 および 2.1.214 により動作確認を行っている。
  • Constructor Details

    • H2Dialect

      public H2Dialect()
  • Method Details

    • supportsIdentity

      public boolean supportsIdentity()
      IDENTITY(オートインクリメントカラム)が使用できるか否か。

      H2では、IDENTITYカラムを使用できるため、 trueを返す。

      Specified by:
      supportsIdentity in interface Dialect
      Overrides:
      supportsIdentity in class DefaultDialect
      Returns:
      falseを返す。
    • supportsIdentityWithBatchInsert

      public boolean supportsIdentityWithBatchInsert()
      batch insert時にIDENTITY(オートインクリメントカラム)が使用できるか否か。 H2では、batch insertでIDENTITYカラムが使用できるため、trueを返す。
      Specified by:
      supportsIdentityWithBatchInsert in interface Dialect
      Overrides:
      supportsIdentityWithBatchInsert in class DefaultDialect
      Returns:
      falseを返す。
    • supportsSequence

      public boolean supportsSequence()
      SEQUENCEが使用できるか否か。

      H2では、シーケンスオブジェクトが使用できるので、 trueを返す。

      Specified by:
      supportsSequence in interface Dialect
      Overrides:
      supportsSequence in class DefaultDialect
      Returns:
      falseを返す。
    • supportsOffset

      public boolean supportsOffset()
      SQL文でのオフセット指定が使用できるか否か

      H2では、offsetがサポートされるのでtrueを返す。

      Specified by:
      supportsOffset in interface Dialect
      Overrides:
      supportsOffset in class DefaultDialect
      Returns:
      falseを返す。
    • isDuplicateException

      public boolean isDuplicateException(SQLException sqlException)
      SQL例外が一意制約違反による例外か否か。

      SQLException.getSQLState()が23505(unique_violation:一意制約違反)の場合、一意制約違反とする。

      Specified by:
      isDuplicateException in interface Dialect
      Overrides:
      isDuplicateException in class DefaultDialect
      Parameters:
      sqlException - SQL例外
      Returns:
      falseを返す。
    • isTransactionTimeoutError

      public boolean isTransactionTimeoutError(SQLException sqlException)
      SQL例外がトランザクションタイムアウトと判断すべき例外か否か。

      H2の場合、以下例外の場合タイムアウト対象の例外として扱う。

      • SQLState:57014(クエリタイムアウト時に送出される例外コード)
      • SQLState:HYT00(ロック試行タイムアウト時に送出される例外コード)
      Specified by:
      isTransactionTimeoutError in interface Dialect
      Overrides:
      isTransactionTimeoutError in class DefaultDialect
      Parameters:
      sqlException - SQL例外
      Returns:
      falseを返す。
    • buildSequenceGeneratorSql

      public String buildSequenceGeneratorSql(String sequenceName)
      シーケンスオブジェクトの次の値を取得するSQL文を構築する。

      シーケンス採番はサポートしない。

      nextval関数を使用して、次の順序を取得するSQL文を構築する。

      Specified by:
      buildSequenceGeneratorSql in interface Dialect
      Overrides:
      buildSequenceGeneratorSql in class DefaultDialect
      Parameters:
      sequenceName - シーケンス名
      Returns:
      シーケンスオブジェクトの次の値を取得するSQL文
    • convertPaginationSql

      public String convertPaginationSql(String sql, SelectOption selectOption)
      SQL文を変換せずに返す。

      offsetlimitを使用したSQL文に変換する。

      Specified by:
      convertPaginationSql in interface Dialect
      Overrides:
      convertPaginationSql in class DefaultDialect
      Parameters:
      sql - SQL文
      selectOption - 検索時のオプション
      Returns:
      変換したSQL文
    • getPingSql

      public String getPingSql()
      Description copied from class: DefaultDialect
      ping用のSQL文を返す。

      データベースへの死活チェックを行うための、ping用SQL文を生成する。 デフォルト実装では、本メソッドはサポートしない。

      Specified by:
      getPingSql in interface Dialect
      Overrides:
      getPingSql in class DefaultDialect
      Returns:
      ping用のSQL文