パッケージ jakarta.data.repository

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


@DocumentedSE @RetentionSE(RUNTIMESE) @TargetSE(TYPESE) public @interface Repository

コンテナー / ランタイムによって実装されるリポジトリインターフェースにアノテーションを付けます。

このクラスは、CDI が使用可能な場合の CDI Bean 定義アノテーションです。CDI またはカスタム依存性注入が使用されているかどうかに関係なく、jakarta.inject.Inject アノテーションを介してアプリケーションでリポジトリ実装を利用できるようにする必要があります。

以下に例を示します。

 @Repository
 public interface Products extends DataRepository<Product, Long> {

     @OrderBy("price")
     List<Product> findByNameLike(String namePattern);

     @Query("UPDATE Product SET price = price - (price * ?1) WHERE price * ?1 <= ?2")
     int putOnSale(float rateOfDiscount, float maxDiscount);

     ...
 }
 
 @Inject
 Products products;

 ...
 found = products.findByNameLike("%Printer%");
 numUpdated = products.putOnSale(0.15f, 20.0f);
 

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

  • オプション要素の概要

    オプション要素
    修飾子と型
    オプションの要素
    説明
    オプションで、リポジトリに使用するデータストアを示します。
    リポジトリの実装を特定の Jakarta Data プロバイダの実装に制限します。
  • フィールドのサマリー

    フィールド
    修飾子と型
    フィールド
    説明
    static final StringSE
    リポジトリのエンティティクラスに存在するエンティティアノテーションの型をサポートする、利用可能な Jakarta Data プロバイダの使用を許可する provider() 属性の値。
    static final StringSE
    デフォルトのデータストアを使用することを示す dataStore() 属性の値。
  • フィールドの詳細

    • ANY_PROVIDER

      static final StringSE ANY_PROVIDER
      リポジトリのエンティティクラスに存在するエンティティアノテーションの型をサポートする、利用可能な Jakarta Data プロバイダの使用を許可する provider() 属性の値。
      関連事項:
    • DEFAULT_DATA_STORE

      static final StringSE DEFAULT_DATA_STORE

      デフォルトのデータストアを使用することを示す dataStore() 属性の値。

      Jakarta EE プロファイルまたはプラットフォームで実行し、エンティティアノテーションがリレーショナルデータベースを示している場合、デフォルトのデータストアは Jakarta EE のデフォルトのデータソースである java:comp/DefaultDataSource です。それ以外の場合、デフォルトのデータストアは Jakarta Data プロバイダーによって決定されます。

      ベンダーによっては、デフォルトのデータストアにベンダー固有の追加構成が必要になる場合があります。

      関連事項:
  • 要素の詳細

    • dataStore

      StringSE dataStore

      オプションで、リポジトリに使用するデータストアを示します。

      dataStore 値を解釈する優先順位は、最高優先順位から最低優先順位の順で次のようになります。

      • Jakarta Config が使用可能な環境で実行し、値が Jakarta Config で見つかった場合、エラーが発生します。Jakarta Config との相互運用性は、Jakarta Data の将来のバージョン用に予約されています。
      • Jakarta EE プロファイルまたはプラットフォームで実行しており、エンティティアノテーションがリレーショナルデータベースを示し、値が java: で始まり、jakarta.annotation.sql.DataSourceDefinition の名前、データソースの JNDI 名、またはデータソースへのリソース参照と一致する場合、対応する javax.sql.DataSource がデータストアとして使用されます。同じ条件が満たされているが、値が永続性ユニット参照と一致する場合、対応する jakarta.persistence.PersistenceUnit がデータストアとして使用されます。
      • それ以外の場合、値は、Jakarta Data プロバイダーがベンダー固有の方法で解釈するためのベンダー固有の構成にリンクする識別子として機能します。Jakarta Data プロバイダーのドキュメントを参照してください。

      この属性のデフォルト値は DEFAULT_DATA_STORE です。

      戻り値:
      データストアの名前または DEFAULT_DATA_STORE
      デフォルト:
      ""
    • provider

      StringSE provider

      リポジトリの実装を特定の Jakarta Data プロバイダの実装に制限します。

      これは、複数の Jakarta Data プロバイダーが同じ型のエンティティアノテーションをサポートしている場合に便利です。この場合、プロバイダー属性によってどの Jakarta Data プロバイダーを使用する必要があるかが明確になります。Jakarta Data プロバイダーは、プロバイダーとして別のプロバイダー名を示す Repository アノテーションを無視する必要があります。

      この属性のデフォルト値は ANY_PROVIDER で、リポジトリのエンティティクラスに存在するエンティティアノテーションの型をサポートする利用可能な Jakarta Data プロバイダを使用できます。

      戻り値:
      Jakarta Data プロバイダーまたは ANY_PROVIDER の名前。
      デフォルト:
      ""