Class BasicDaoContext

java.lang.Object
nablarch.common.dao.BasicDaoContext
All Implemented Interfaces:
DaoContext

public class BasicDaoContext extends Object implements DaoContext
DaoContextのデフォルト実装クラス。
Author:
kawasima, Hisaaki Shioiri
  • Method Details

    • findById

      public <T> T findById(Class<T> entityClass, Object... id)
      プライマリーキーによる検索を行う。

      この実装では、プライマリーキーのメタデータをDatabaseMetaDataから取得する。

      Specified by:
      findById in interface DaoContext
      Type Parameters:
      T - エンティティクラスの型
      Parameters:
      entityClass - エンティティクラス
      id - プライマリーキー (複合キーの場合は定義順)
      Returns:
      エンティティオブジェクト
      Throws:
      IllegalArgumentException - (主キーのカラム数と指定した条件数が一致しない場合)
      NoDataException - (検索条件に該当するレコードが存在しない場合)
    • findByIdOrNull

      public <T> T findByIdOrNull(Class<T> entityClass, Object... id)
      プライマリーキーによる検索を行う。

      この実装では、プライマリーキーのメタデータをDatabaseMetaDataから取得する。

      Specified by:
      findByIdOrNull in interface DaoContext
      Type Parameters:
      T - エンティティクラスの型
      Parameters:
      entityClass - エンティティクラス
      id - プライマリーキー (複合キーの場合は定義順)
      Returns:
      エンティティオブジェクト。0件の場合はnull。
      Throws:
      IllegalArgumentException - (主キーのカラム数と指定した条件数が一致しない場合)
    • findAll

      public <T> EntityList<T> findAll(Class<T> entityClass)
      Description copied from interface: DaoContext
      全件の検索を行う。
      Specified by:
      findAll in interface DaoContext
      Type Parameters:
      T - エンティティクラスの型
      Parameters:
      entityClass - エンティティクラス
      Returns:
      検索結果リスト。0件の場合は空リスト。
    • findAllBySqlFile

      public <T> EntityList<T> findAllBySqlFile(Class<T> entityClass, String sqlId, Object params)
      Description copied from interface: DaoContext
      SQL_IDをもとにバインド変数を展開して検索処理を行う。
      Specified by:
      findAllBySqlFile in interface DaoContext
      Type Parameters:
      T - 検索結果をマッピングするBeanクラスの型
      Parameters:
      entityClass - 検索結果をマッピングするBeanクラス
      sqlId - SQL_ID
      params - バインド変数
      Returns:
      検索結果リスト。0件の場合は空リスト。
    • findAllBySqlFile

      public <T> EntityList<T> findAllBySqlFile(Class<T> entityClass, String sqlId)
      Description copied from interface: DaoContext
      SQL_IDをもとに検索を行う。
      Specified by:
      findAllBySqlFile in interface DaoContext
      Type Parameters:
      T - 検索結果をマッピングするBeanクラスの型
      Parameters:
      entityClass - 検索結果をマッピングするBeanクラス
      sqlId - SQL_ID
      Returns:
      検索結果リスト。0件の場合は空リスト。
    • executeQuery

      protected nablarch.common.dao.SqlResourceHolder executeQuery(String normalizedSqlId, Object params, SelectOption selectOption)
      検索クエリを実行する。
      Parameters:
      normalizedSqlId - SQL ID
      params - バインド変数
      selectOption - 検索オプション
      Returns:
      検索結果
    • findAllBySqlFileWithoutPaginate

      protected <T> EntityList<T> findAllBySqlFileWithoutPaginate(Class<T> entityClass, String sqlId, Object params)
      ページングなしの場合の検索を実行する。
      Type Parameters:
      T - エンティティクラス
      Parameters:
      entityClass - エンティティクラス
      sqlId - SQL ID
      params - バインド変数
      Returns:
      エンティティクラスのリスト
    • findAllBySqlFIleWithPaginate

      protected <T> EntityList<T> findAllBySqlFIleWithPaginate(Class<T> entityClass, String sqlId, Object params)
      ページネーションつきの検索を実行する。

      遅延ロード(deferがtrueの場合)、IllegalArgumentExceptionを送出する。

      Type Parameters:
      T - エンティティクラス
      Parameters:
      entityClass - エンティティクラス
      sqlId - SQL ID
      params - バインド変数
      Returns:
      エンティティリストを返します。
    • findBySqlFile

      public <T> T findBySqlFile(Class<T> entityClass, String sqlId, Object params)
      SQL_IDをもとに1件検索を行う。
      Specified by:
      findBySqlFile in interface DaoContext
      Type Parameters:
      T - 検索結果をマッピングするBeanクラスの型
      Parameters:
      entityClass - 検索結果をマッピングするBeanクラス
      sqlId - SQL_ID
      params - バインド変数
      Returns:
      エンティティオブジェクト
      Throws:
      NoDataException - (検索条件に該当するレコードが存在しない場合)
    • findBySqlFileOrNull

      public <T> T findBySqlFileOrNull(Class<T> entityClass, String sqlId, Object params)
      SQL_IDをもとに1件検索を行う。
      Specified by:
      findBySqlFileOrNull in interface DaoContext
      Type Parameters:
      T - 検索結果をマッピングするBeanクラスの型
      Parameters:
      entityClass - 検索結果をマッピングするBeanクラス
      sqlId - SQL_ID
      params - バインド変数
      Returns:
      エンティティオブジェクト。0件の場合はnull。
    • countBySqlFile

      public <T> long countBySqlFile(Class<T> entityClass, String sqlId, Object params)
      Description copied from interface: DaoContext
      SQL_IDをもとに結果件数を取得する。
      Specified by:
      countBySqlFile in interface DaoContext
      Type Parameters:
      T - エンティティクラスの型
      Parameters:
      entityClass - エンティティクラス
      sqlId - SQL_ID
      params - バインド変数
      Returns:
      件数
    • update

      public <T> int update(T entity) throws jakarta.persistence.OptimisticLockException
      Description copied from interface: DaoContext
      エンティティオブジェクトを元に更新処理を行う。

      エンティティの主キーが更新条件となる。

      Specified by:
      update in interface DaoContext
      Type Parameters:
      T - エンティティクラスの型
      Parameters:
      entity - エンティティオブジェクト
      Returns:
      更新件数
      Throws:
      jakarta.persistence.OptimisticLockException - バージョン不一致で更新対象が存在しない場合
    • batchUpdate

      public <T> void batchUpdate(List<T> entities)
      Description copied from interface: DaoContext
      エンティティオブジェクトの情報を元に一括更新を行う。

      DaoContext.update(Object)とは異なり、一括更新処理ではバージョン不一致チェックは行わない。 例えば、バージョン番号が変更になっていた場合はそのレコードのみ更新されずに処理は正常に終了する。 バージョン番号のチェックを必要とする場合には、DaoContext.update(Object)を使用すること。

      Specified by:
      batchUpdate in interface DaoContext
      Type Parameters:
      T - エンティティクラスの型
      Parameters:
      entities - 更新対象のエンティティリスト
    • insert

      public <T> void insert(T entity)
      Description copied from interface: DaoContext
      エンティティオブジェクトを元に登録処理を行う。
      Specified by:
      insert in interface DaoContext
      Type Parameters:
      T - エンティティクラスの型
      Parameters:
      entity - エンティティオブジェクト
    • batchInsert

      public <T> void batchInsert(List<T> entities)
      Description copied from interface: DaoContext
      エンティティオブジェクトの情報を一括で登録する。
      Specified by:
      batchInsert in interface DaoContext
      Type Parameters:
      T - エンティティクラスの型
      Parameters:
      entities - エンティティリスト
    • delete

      public <T> int delete(T entity)
      Description copied from interface: DaoContext
      エンティティオブジェクトを元に削除処理を行う。

      エンティティの主キーが削除条件となる。

      Specified by:
      delete in interface DaoContext
      Type Parameters:
      T - エンティティクラスの型
      Parameters:
      entity - エンティティオブジェクト
      Returns:
      削除件数
    • batchDelete

      public <T> void batchDelete(List<T> entities)
      Description copied from interface: DaoContext
      エンティティオブジェクトを元に一括削除処理を行う。

      エンティティの主キーが削除条件となる。

      Specified by:
      batchDelete in interface DaoContext
      Type Parameters:
      T - エンティティクラスの型
      Parameters:
      entities - エンティティリスト
    • tableName

      public <T> String tableName(T entity)
      エンティティクラス名からテーブル名へ変換する。
      Type Parameters:
      T - エンティティクラス
      Parameters:
      entity - エンティティ
      Returns:
      テーブル名
    • page

      public DaoContext page(long page)
      Description copied from interface: DaoContext
      ページングの何ページ目を検索するかを指定する。
      Specified by:
      page in interface DaoContext
      Parameters:
      page - ページ番号(1-origin)
      Returns:
      DaoContextがそのまま返る。
    • per

      public DaoContext per(long per)
      Description copied from interface: DaoContext
      ページングの1ページにつき何件表示するかを指定する。
      Specified by:
      per in interface DaoContext
      Parameters:
      per - ページ内表示件数
      Returns:
      DaoContextがそのまま返る。
    • defer

      public DaoContext defer()
      Description copied from interface: DaoContext
      検索結果の取得を遅延させる。
      Specified by:
      defer in interface DaoContext
      Returns:
      DaoContextがそのまま返る。
    • normalizeSqlId

      protected <T> String normalizeSqlId(String sqlId, Class<T> entityClass)
      SQL_IDにファイル名がついてない場合は、Entityクラスの完全修飾名を付加する。
      Type Parameters:
      T - エンティティ型
      Parameters:
      sqlId - SQL ID
      entityClass - エンティティクラス
      Returns:
      正規化したSQL ID
    • setIdGenerator

      protected void setIdGenerator(jakarta.persistence.GenerationType type, IdGenerator generator)
      IDジェネレータを設定する。
      Parameters:
      type - IDジェネレータのタイプ
      generator - IDジェネレータ
    • setDbConnection

      protected void setDbConnection(AppDbConnection dbConnection)
      使用するデータベースコネクションを設定する。
      Parameters:
      dbConnection - データベースコネクション