パッケージ jakarta.data.repository

アノテーションインターフェース Save


条件付きで挿入または更新操作を実行するリポジトリメソッドのライフサイクルアノテーション。

Save アノテーションは、アノテーション付きリポジトリメソッドが 1 つ以上のエンティティを受け入れ、各エンティティの状態をデータベースに追加するか、データベースにすでに保持されている状態を更新することを示します。

Save メソッドは、エンティティクラスのインスタンスを 1 つ以上受け入れます。メソッドには、次のいずれかの型のパラメーターが 1 つだけ必要です。

  • 挿入または更新するエンティティのクラス、または
  • List<E> または E[]。ここで、E は挿入または更新されるエンティティのクラスです。

アノテーションが付けられたメソッドは、void として宣言されるか、そのパラメーターの型と同じ戻り値の型を持つ必要があります。

すべての Jakarta Data プロバイダーは、このシグネチャーに準拠する Save メソッドを受け入れる必要があります。他のシグネチャーを持つメソッドへの Save アノテーションの適用は、Jakarta Data プロバイダー間で移植できません。

例: ガレージを表すインターフェースを考えてみましょう:

 @Repository
 interface Garage {
     @Save
     Car park(Car car);
 }
 

アノテーション付きメソッドによって実行される操作は、引数として渡されたエンティティの一意の識別子を持つエンティティがデータベースにすでに保持されているかどうかによって異なります。

  • そのようなエンティティがすでにデータベースに保持されている場合、アノテーションが付けられたメソッドは、@Update アノテーションが付けられているかのように動作する必要があります。
  • それ以外の場合、データベース内にそのようなエンティティが存在しない場合は、アノテーションが付けられたメソッドは、@Insert が付けられたかのように動作する必要があります。

@Find@Query@Insert@Update@Delete@Save などのアノテーションは相互に排他的です。リポジトリインターフェースの特定のメソッドには、最大で 1 つの @Find アノテーション、ライフサイクルアノテーション、クエリアノテーションを含めることができます。

関連事項: