@Published public final class UniversalDao extends Object
EntityTableColumnIdVersionTemporalGeneratedValueSequenceGeneratorTableGenerator| 修飾子とタイプ | メソッドと説明 | 
|---|---|
static <T> void | 
batchDelete(List<T> entities)
与えられたエンティティオブジェクトからデリート文を生成し一括実行する。 
 | 
static <T> void | 
batchInsert(List<T> entities)
与えられたエンティティリストオブジェクトからインサート文を生成し一括実行する。 
 | 
static <T> void | 
batchUpdate(List<T> entities)
与えられたエンティティ情報からアップデート文を生成し一括実行する。 
 | 
static <T> long | 
countBySqlFile(Class<T> entityClass,
              String sqlId)
SQL_IDをもとに検索し、件数を取得する。 
 | 
static <T> long | 
countBySqlFile(Class<T> entityClass,
              String sqlId,
              Object params)
SQL_IDをもとにバインド変数を展開して検索し、件数を取得する。 
 | 
static DaoContext | 
defer()
検索結果の取得を遅延させる。 
 | 
static <T> int | 
delete(T entity)
与えられたエンティティオブジェクトからデリート文を生成し実行する。 
 | 
static <T> boolean | 
exists(Class<T> entityClass,
      String sqlId)
SQL_IDをもとに検索し、データが存在するか否かを確認する。 
 | 
static <T> boolean | 
exists(Class<T> entityClass,
      String sqlId,
      Object params)
SQL_IDをもとにバインド変数を展開して検索し、データが存在するか否かを確認する。 
 | 
static <T> EntityList<T> | 
findAll(Class<T> entityClass)
すべてのエンティティを取得する。 
 | 
static <T> EntityList<T> | 
findAllBySqlFile(Class<T> entityClass,
                String sqlId)
SQL_IDをもとに検索し、結果Beanのリストに格納して取得する。 
 | 
static <T> EntityList<T> | 
findAllBySqlFile(Class<T> entityClass,
                String sqlId,
                Object params)
SQL_IDをもとにバインド変数を展開した上で検索し、結果Beanのリストに格納して取得する。 
 | 
static <T> T | 
findById(Class<T> entityClass,
        Object... id)
主キーを指定して、1件だけエンティティを取得する。 
 | 
static <T> T | 
findBySqlFile(Class<T> entityClass,
             String sqlId,
             Object params)
SQL_IDをもとにバインド変数を展開して検索し、結果を格納したBeanを一件取得する。 
 | 
static <T> void | 
insert(T entity)
与えられたエンティティオブジェクトからインサート文を生成し実行する。 
 | 
static DaoContext | 
page(long page)
ページ数を指定する。 
 | 
static DaoContext | 
per(long per)
1ページにつき何件取得するかを指定する。 
 | 
static <T> int | 
update(T entity)
与えられたエンティティオブジェクトからアップデート文を生成し実行する。 
 | 
public static <T> T findById(Class<T> entityClass, Object... id)
T - エンティティクラス(戻り値の型)entityClass - エンティティクラスオブジェクトid - 条件項目(複数のキーを使う場合は、対象テーブルでのキーの定義順に引き渡す)NoDataException - 検索条件に該当するレコードが存在しない場合IllegalStateException - 対象テーブルから主キーの定義順を取得できなかった場合public static <T> EntityList<T> findAll(Class<T> entityClass)
T - エンティティクラス(戻り値の型)entityClass - エンティティクラスオブジェクトpublic static <T> EntityList<T> findAllBySqlFile(Class<T> entityClass, String sqlId, Object params)
 
 // 検索条件を引き渡すためのBeanを設定する
 // SQL「FIND_BY_AUTHOR」にBookエンティティのAUTHORカラムがバインド変数として記述されている場合を想定する
 Book condition = new Book();
 condition.setAuthor("Martin Fowler");
 EntityList<Book> books = UniversalDao.findAllBySqlFile(Book.class, "FIND_BY_AUTHOR", condition);
 
 
 結合した表のカラムを含めて射影する場合は、単一の表とマッピングされたEntityでは結果を格納できない。
 そのような場合は、射影したカラムと対応するプロパティを定義したBeanを引き渡す。T - 検索結果をマッピングするBeanクラスentityClass - 検索結果をマッピングするBeanクラスオブジェクトsqlId - SQL_IDparams - バインド変数(SQLファイル内のバインド変数に対応するBeanを作成し引き渡すこともできる)public static <T> EntityList<T> findAllBySqlFile(Class<T> entityClass, String sqlId)
UniversalDao.findAllBySqlFile(Class, String, Object)を参照すること。T - 検索結果をマッピングするBeanクラスentityClass - 検索結果をマッピングするBeanクラスオブジェクトsqlId - SQL_IDpublic static <T> T findBySqlFile(Class<T> entityClass, String sqlId, Object params)
 
 // 検索条件を引き渡すためのBeanを設定する
 // FIND_BY_IDにBookエンティティのIDカラムがバインド変数として記述されている場合を想定
 Book condition = new Book();
 condition.setId(1L);
 Book book = UniversalDao.findBySqlFile(Book.class, "FIND_BY_ID", condition);
 
 
 検索条件に該当するレコードが複数存在する場合、例外の送出は行わず、検索結果の先頭行を取得して返却する。
 確実に一行のレコードを取得する検索条件を設定すること。
 T - 検索結果をマッピングするBeanクラスentityClass - 検索結果をマッピングするBeanクラスオブジェクトsqlId - SQL_IDparams - バインド変数NoDataException - (検索条件に該当するレコードが存在しない場合)public static <T> long countBySqlFile(Class<T> entityClass, String sqlId)
UniversalDao.countBySqlFile(Class, String, Object)を参照すること。T - エンティティクラスentityClass - エンティティクラスsqlId - SQL_IDpublic static <T> long countBySqlFile(Class<T> entityClass, String sqlId, Object params)
T - エンティティクラスentityClass - エンティティクラスsqlId - SQL_IDparams - バインド変数public static <T> boolean exists(Class<T> entityClass, String sqlId)
UniversalDao.exists(Class, String, Object)を参照すること。
 T - エンティティ型entityClass - エンティティクラスsqlId - SQL_IDpublic static <T> boolean exists(Class<T> entityClass, String sqlId, Object params)
T - エンティティ型entityClass - エンティティクラスsqlId - SQL_IDparams - バインド変数public static <T> int update(T entity)
Versionが付与されたプロパティが存在する場合には、
 対象レコードは排他制御の対象となり、更新処理実行時に自動で排他制御が実行される。
 
 排他制御の対象であるエンティティを更新する際は、以下の場合にOptimisticLockExceptionを送出する。
 T - エンティティクラスentity - エンティティオブジェクトjavax.persistence.OptimisticLockException - 更新対象が存在しない場合public static <T> void batchUpdate(List<T> entities)
UniversalDao.update(Object)を使用すること。
 もし、更新時にバージョン番号が不一致のエンティティオブジェクトが存在した場合、
 そのレコードは更新されずに処理が正常に終了する。T - エンティティクラスentities - エンティティオブジェクトリストpublic static <T> void insert(T entity)
GeneratedValueが付与されているプロパティは採番された値が登録される。
 
 Versionが付与されたversionカラムに対して明示的に値を設定していたとしても、
 「0」で上書きされてinsertされる。T - エンティティクラスentity - エンティティオブジェクトpublic static <T> void batchInsert(List<T> entities)
GeneratedValueが付与されているプロパティは採番された値が登録される。
 
 Versionが付与されたversionカラムに対して明示的に値を設定していたとしても、
 「0」で上書きされてinsertされる。T - エンティティクラスentities - エンティティリストpublic static <T> int delete(T entity)
T - エンティティクラスentity - エンティティオブジェクトpublic static <T> void batchDelete(List<T> entities)
T - エンティティクラスentities - エンティティリストpublic static DaoContext page(long page)
 
  // pageメソッドに「1」が与えられている場合に返却される件数は以下のようになる。
  // perメソッドに「10」を与える→1~10件目を返す
  // perメソッドに「20」を与える→1~20件目を返す
 EntityList<Book> books = UniversalDao.page(1)
                   .per(20)
                   .findAllBySqlFile(Book.class, "FIND_ALL");
  // pageメソッドに「2」が与えられている場合に返却される件数は以下のようになる。
  // perメソッドに「10」を与える→11~20件目を返す
  // perメソッドに「20」を与える→21~40件目を返す
 EntityList<Book> books = UniversalDao.page(2)
                   .per(20)
                   .findAllBySqlFile(Book.class, "FIND_ALL");
 
 
 表示対象のページ数におけるレコード件数が、perメソッドで与えたページ区切りに満たない場合は、取得可能な件数分を返却する。
 page - ページ数public static DaoContext per(long per)
 
  // perメソッドに「10」が与えられている場合は、返却される件数は以下のようになる。
  // pageメソッドに「1」を与える→1~10件目を返す
  // pageメソッドに「2」を与える→11~20件目を返す
 EntityList<Book> books = UniversalDao.page(1)
                   .per(10)
                   .findAllBySqlFile(Book.class, "FIND_ALL");
  // perメソッドに「20」が与えられている場合は、返却される件数は以下のようになる。
  // pageメソッドに「1」を与える→1~20件目を返す
  // pageメソッドに「2」を与える→21~40件目を返す
 EntityList<Book> books = UniversalDao.page(1)
                   .per(20)
                   .findAllBySqlFile(Book.class, "FIND_ALL");
 
 
 表示対象のページ数におけるレコード件数が、perメソッドで与えたページ区切りに満たない場合は、取得可能な件数分を返却する。
 perメソッドに10を与えていて、総件数が5件である場合、pageメソッドに1を与えた場合は1~5件目を返却する。
 perメソッドに10を与えていて、総件数が15件である場合、pageメソッドに2を与えた場合は11~15件目を返却する。
 per - 取得する件数public static DaoContext defer()
 
 // サーバサイドカーソルを利用するためclose処理を行う必要がある
 try (DeferredEntityList<Project> searchList =  (DeferredEntityList<Project>) UniversalDao
         .defer()
         .findAllBySqlFile(Project.class, "SEARCH_PROJECT",searchCondition)) {
     for (Project project : searchList) {
         // projectを利用した処理
     }
 }