パッケージ jakarta.data.repository

インターフェース CrudRepository<T,K>

型パラメーター:
T - リポジトリのプライマリエンティティクラスの型。
K - プライマリエンティティのプロパティの一意の識別子フィールドの型。
すべてのスーパーインターフェース:
BasicRepository<T,K>DataRepository<T,K>

public interface CrudRepository<T,K> extends BasicRepository<T,K>

作成、読み取り、更新、削除 (CRUD) 操作を実行するための組み込みリポジトリスーパー型。

このリポジトリは、BasicRepository インターフェースを継承し、基本的な取得削除に加えて、insert(S) および update(S) 操作を追加します。このインターフェースは、データアクセスオブジェクト (DAO) の側面とリポジトリパターンを組み合わせ、Java アプリケーション内で永続エンティティを管理するための多用途で完全なソリューションを提供します。

CrudRepository<T,K> の型パラメーターは、リポジトリのプライマリエンティティ型 (T) と、プライマリエンティティ型の一意の識別子属性 (K) の型を取得します。

プライマリエンティティ型は、エンティティ型を明示的に指定しない countBy... や deleteBy... などのリポジトリメソッドに使用されます。

エンティティの例:

 @Entity
 public class Cars {
     @Id
     public long vin;
     public String make;
     public String model;
     public int year;
     ...
 }
 

リポジトリの例:

 @Repository
 public interface Cars extends CrudRepository<Car, Long> {

     List<Car> findByMakeAndModel(String make, String model, Sort<?>... sorts);

     ...
 }
 

使用例:

 @Inject
 Cars cars;

 ...

 Car car1 = ...
 car1 = cars.insert(car1);

 List<Car> found = findByMakeAndModel(car1.make,
                                      car1.model,
                                      Sort.desc("year"),
                                      Sort.asc("vin"));
 

モジュール Javadoc は Jakarta Data の overview を提供します。

関連事項:
  • 方法の概要

    修飾子と型
    メソッド
    説明
    <S extends T>
    S
    insert(S entity)
    エンティティをデータベースに挿入します。
    <S extends T>
    ListSE<S>
    insertAll(ListSE<S> entities)
    複数のエンティティをデータベースに挿入します。
    <S extends T>
    S
    update(S entity)
    データベースにすでに存在するエンティティを変更します。
    <S extends T>
    ListSE<S>
    updateAll(ListSE<S> entities)
    データベースにすでに存在するエンティティを変更します。

    インターフェース jakarta.data.repository.BasicRepository から継承されたメソッド

    delete, deleteAll, deleteById, findAll, findAll, findById, save, saveAll
  • メソッドの詳細

    • insert

      @Insert <S extends T> S insert(S entity)

      エンティティをデータベースに挿入します。同じ一意の識別子を持つこの型のエンティティがデータベースにすでに存在し、データベースが ACID トランザクションをサポートしている場合、このメソッドは EntityExistsException を発生させます。BASE モデルに従うデータベース、またはデータの書き込みに追加モデルを使用するデータベースでは、この例外はスローされません。

      このメソッドの結果として返されるエンティティインスタンスには、自動的に生成されたすべての値と、挿入によって変更された増分値を含む、データベースに書き込まれたすべての値が含まれている必要があります。このメソッドを呼び出した後は、パラメーターとして指定されたインスタンスを引き続き使用しないでください。このメソッドは、パラメーターとして指定されたインスタンスの状態については保証しません。

      型パラメーター:
      S - 挿入するエンティティの型。
      パラメーター:
      entity - 挿入するエンティティ。null であってはなりません。
      戻り値:
      挿入されたエンティティ。これは、挿入によって値が生成されたか、自動的に増加されたかによって、異なるインスタンスである場合とそうでない場合があります。
      例外:
      EntityExistsException - エンティティがデータベース (ACID でサポートされているデータベース) にすでに存在する場合。
      NullPointerExceptionSE - エンティティが null の場合。
    • insertAll

      @Insert <S extends T> ListSE<S> insertAll(ListSE<S> entities)

      複数のエンティティをデータベースに挿入します。指定されたエンティティのいずれかと同じ一意の識別子を持つこの型のエンティティがデータベースにすでに存在し、データベースが ACID トランザクションをサポートしている場合、このメソッドは EntityExistsException を発生させます。BASE モデルに従うデータベース、またはデータの書き込みに追加モデルを使用するデータベースでは、この例外はスローされません。

      返される IterableSE 内のエンティティには、自動的に生成されたすべての値と、挿入によって変更された増分値を含む、データベースに書き込まれたすべての値が含まれている必要があります。このメソッドを呼び出した後は、パラメーターで指定されたエンティティインスタンスを引き続き使用しないでください。このメソッドは、パラメーターで指定されたエンティティインスタンスの状態については保証しません。Iterable 戻り値内のエンティティの位置は、エンティティの一意の識別子に基づくパラメーター内のエンティティの位置に対応する必要があります。

      型パラメーター:
      S - 挿入するエンティティの型。
      パラメーター:
      entities - 挿入するエンティティ。
      戻り値:
      挿入されたエンティティを含む反復可能オブジェクト。挿入によって値が生成されたか、自動的にインクリメントされたかに応じて、異なるインスタンスである場合とそうでない場合があります。
      例外:
      EntityExistsException - いずれかのエンティティがデータベース (ACID でサポートされているデータベース) にすでに存在する場合。
      NullPointerExceptionSE - iterable が null であるか、いずれかの要素が null の場合。
    • update

      @Update <S extends T> S update(S entity)

      データベースにすでに存在するエンティティを変更します。

      更新を行うには、同じ一意の識別子を持つ一致するエンティティがデータベース内に存在する必要があります。追加モデルを使用してデータを書き込むデータベース、または BASE モデルに従うデータベースでは、このメソッドは insert(S) メソッドと同じように動作します。

      エンティティがバージョン管理されている場合 (たとえば、jakarta.persistence.Version を使用するか、version という名前の属性を持つなど、エンティティモデルの別の規則によって)、バージョンも一致する必要があります。アップデートを行うと、バージョンは自動的にインクリメントされます。

      型パラメーター:
      S - 更新するエンティティの型。
      パラメーター:
      entity - 更新するエンティティ。null であってはなりません。
      戻り値:
      自動的に生成されたすべての値、更新されたバージョン、更新の結果として変更された増分値を含む更新されたエンティティインスタンス。
      例外:
      OptimisticLockingFailureException - エンティティがデータベース内に見つからないか、データベース内のバージョンと異なるバージョンを持っています。
      NullPointerExceptionSE - エンティティが null の場合。
    • updateAll

      @Update <S extends T> ListSE<S> updateAll(ListSE<S> entities)

      データベースにすでに存在するエンティティを変更します。

      エンティティを更新するには、同じ一意の識別子を持つ一致するエンティティがデータベース内に存在する必要があります。追加モデルを使用してデータを書き込むデータベース、または BASE モデルに従うデータベースでは、このメソッドは insertAll(java.util.List<S>) メソッドと同じように動作します。

      エンティティがバージョン管理されている場合 (たとえば、jakarta.persistence.Version を使用するか、version という名前の属性を持つなど、エンティティモデルの別の規則によって)、バージョンも一致する必要があります。アップデートを行うと、バージョンは自動的にインクリメントされます。

      型パラメーター:
      S - 更新するエンティティの型。
      パラメーター:
      entities - 更新するエンティティ。
      戻り値:
      更新されたエンティティインスタンスは、提供されたエンティティと同じ順序で、自動的に生成されたすべての値、更新されたバージョン、更新の結果として変更された増分値を含みます。
      例外:
      OptimisticLockingFailureException - 指定されたエンティティのいずれかがデータベース内に見つからない場合、またはデータベース内のバージョンと異なるバージョンがある場合。
      NullPointerExceptionSE - 指定された Iterable が null であるか、いずれかの要素が null の場合。