パッケージ jakarta.persistence

インターフェース EntityManager

すべてのスーパーインターフェース:
AutoCloseableSE

public interface EntityManager extends AutoCloseableSE
永続コンテキストと対話するために使用されるインターフェース。

EntityManager のインスタンスは EntityManagerFactory から取得する必要があり、関連付けられた永続化ユニットに属するエンティティの永続性のみを管理できます。

アプリケーション管理の EntityManager は、EntityManagerFactory.createEntityManager() の呼び出しを通じて作成できます。永続化プロバイダーによってリソースがクリーンアップされるようにするには、EntityManager を close() の呼び出しによって明示的に閉じる必要があります。このアプローチでは、クリーンアップと例外管理のほぼ完全な責任がクライアントに課されるため、非常にエラーが発生しやすいと考えられます。メソッド EntityManagerFactory.runInTransaction(java.util.function.Consumer<jakarta.persistence.EntityManager>) および EntityManagerFactory.callInTransaction(java.util.function.Function<jakarta.persistence.EntityManager, R>) を使用する方がはるかに安全です。

Jakarta EE 環境では、コンテナー管理の EntityManager は、PersistenceContext を使用した依存性注入によって取得できます。

永続ユニットにリソースローカルトランザクション管理がある場合、トランザクションは getTransaction() を呼び出して取得した EntityTransaction を使用して管理する必要があります。

EntityManager およびそれに関連するリソースローカル EntityTransaction のカスタムアプリケーション管理の完全な表現は次のとおりです。

各 EntityManager インスタンスは、個別の永続コンテキストに関連付けられます。永続コンテキストは、特定の永続エンティティ ID (エンティティ型と主キーによって定義される) に対して最大 1 つのエンティティインスタンスが存在するエンティティインスタンスのセットです。永続コンテキストに関連付けられたエンティティインスタンスは、永続プロバイダの制御下にある明確に定義されたライフサイクルを持つ管理オブジェクトとみなされます。

すべてのエンティティインスタンスは、次のライフサイクル状態のいずれかにあると特徴付けることができます。

  • 新しいエンティティには永続的な ID がなく、まだどの永続コンテキストにも関連付けられていません。
  • 管理対象エンティティは、現在永続コンテキストに関連付けられている永続 ID を持つインスタンスです。
  • デタッチされたエンティティは、アクティブな永続コンテキストに関連付けられていない (または関連付けられていない) 永続 ID を持つインスタンスです。
  • 削除されたエンティティは、永続的な ID を持つインスタンスであり、永続コンテキストに関連付けられており、トランザクションのコミット時にデータベースから削除されるようにスケジュールされています。

EntityManager API は、永続コンテキストの状態に影響する操作、または個々のエンティティインスタンスのライフサイクル状態を変更する操作を実行するために使用されます。クライアントは、インスタンスを persist(java.lang.Object) および remove(java.lang.Object) し、主キーでエンティティを検索し、エンティティ型にまたがるクエリを実行できます。エンティティは、detach(java.lang.Object) を呼び出すことによって永続コンテキストから切り離され、clear() を呼び出すことによって永続コンテキストが完全にクリアされ、そのすべてのエンティティが切り離されます。

クライアントは、エンティティを直接変更してエンティティインスタンスの状態を変更したり、デタッチされたインスタンスの状態をマージして、同じ永続 ID を持つ管理対象インスタンスの状態を置き換えるようにリクエストしたりすることもできます。明示的な「更新」操作はないことに注意してください。エンティティは管理対象オブジェクトであるため、アクティブな永続コンテキストに関連付けられている限り、その永続フィールドとプロパティへの変更は自動的に検出されます。

永続コンテキストに関連付けられたエンティティの状態の変更は、データベースとすぐには同期されません。同期は、フラッシュと呼ばれるプロセス中に行われます。フラッシュプロセスのタイミングは、フラッシュモードによって決まります。フラッシュモードは、setFlushMode(FlushModeType) を呼び出すことによって明示的に設定できます。

  • FlushModeType.COMMIT の場合、永続コンテキストはトランザクションがコミットされる前にフラッシュされます。
  • デフォルトの FlushModeType.AUTO の場合、永続コンテキストに関連付けられたエンティティに対するフラッシュされていない変更によって結果セットが影響を受けるクエリを実行する前に、永続コンテキストもフラッシュする必要があります。
クライアントは、flush() を呼び出すことによって即時フラッシュを強制的に実行できます。

いつでも、永続化コンテキストはエンティティインスタンスに対して楽観的ロックまたは悲観的ロックを保持する可能性があります。可能なロック型の全範囲が LockModeType で列挙されます。メソッド lock(Object, LockModeType)refresh(Object, LockModeType)find(Class, Object, LockModeType) を含む、このインターフェースの一部の操作は明示的な LockModeType を受け入れ、クライアントが特定の型のロックをリクエストできるようにします。

永続コンテキスト (または 1 次キャッシュ) と 2 次キャッシュ (存在する場合) の相互作用は、setCacheRetrieveMode(CacheRetrieveMode) および setCacheStoreMode(CacheStoreMode) を呼び出すことによって制御できます。

一部の操作では、1 つ以上の組み込みオプションおよびベンダー固有のオプションを受け入れます。

導入:
1.0
関連事項:
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    <C, T> T
    指定された関数を呼び出し、この EntityManager の基礎となるデータベース接続を使用してその結果を返します。
    void
    永続コンテキストをクリアして、すべての管理対象エンティティを切り離します。
    void
    アプリケーション管理エンティティマネージャーを閉じます。
    boolean
    指定されたオブジェクトが現在の永続コンテキストに属する管理対象エンティティインスタンスであるかどうかを判断します。
    新しい可変 EntityGraph を作成し、エンティティグラフの動的な定義を可能にします。
    名前付きの EntityGraph の変更可能なコピーを取得するか、指定された名前のエンティティグラフがない場合は null を返します。
    Jakarta Persistence クエリ言語またはネイティブ SQL で記述された名前付きクエリを実行するための Query のインスタンスを作成します。
    <T> TypedQuery<T>
    createNamedQuery(StringSE name, ClassSE<T> resultClass)
    query という名前の Jakarta Persistence クエリ言語を実行するための TypedQuery のインスタンスを作成します。
    データベース内のストアドプロシージャを実行するための StoredProcedureQuery のインスタンスを作成します。
    更新や削除など、ネイティブ SQL ステートメントを実行するための Query のインスタンスを作成します。
    <T> Query
    createNativeQuery(StringSE sqlString, ClassSE<T> resultClass)
    ネイティブ SQL クエリを実行するための Query のインスタンスを作成します。
    createNativeQuery(StringSE sqlString, StringSE resultSetMapping)
    ネイティブ SQL クエリを実行するための Query のインスタンスを作成します。
    createQuery(CriteriaDelete<?> deleteQuery)
    条件削除クエリを実行するための Query のインスタンスを作成します。
    <T> TypedQuery<T>
    createQuery(CriteriaQuery<T> criteriaQuery)
    条件クエリを実行するための TypedQuery のインスタンスを作成します。
    <T> TypedQuery<T>
    createQuery(CriteriaSelect<T> selectQuery)
    条件クエリを実行するための TypedQuery のインスタンスを作成します。条件クエリは、トップレベルクエリの結合または交差である場合があります。
    createQuery(CriteriaUpdate<?> updateQuery)
    条件更新クエリを実行するための Query のインスタンスを作成します。
    <T> TypedQuery<T>
    Jakarta Persistence クエリ言語またはネイティブ SQL で記述された名前付きクエリを実行するための TypedQuery のインスタンスを作成します。
    Jakarta Persistence クエリ言語ステートメントを実行するための Query のインスタンスを作成します。
    <T> TypedQuery<T>
    createQuery(StringSE qlString, ClassSE<T> resultClass)
    Jakarta Persistence クエリ言語ステートメントを実行するための TypedQuery のインスタンスを作成します。
    データベース内のストアドプロシージャを実行するための StoredProcedureQuery のインスタンスを作成します。
    createStoredProcedureQuery(StringSE procedureName, ClassSE<?>... resultClasses)
    データベース内のストアドプロシージャを実行するための StoredProcedureQuery のインスタンスを作成します。
    createStoredProcedureQuery(StringSE procedureName, StringSE... resultSetMappings)
    データベース内のストアドプロシージャを実行するための StoredProcedureQuery のインスタンスを作成します。
    void
    指定された管理対象エンティティまたは削除されたエンティティを永続コンテキストから削除し、エンティティを即座に切り離します。
    <T> T
    find(EntityGraph<T> entityGraph, ObjectSE primaryKey, FindOption... options)
    指定された options を使用し、EntityGraph を負荷グラフとして解釈して、主キーによって指定された EntityGraph のルートエンティティのインスタンスを検索します。
    <T> T
    find(ClassSE<T> entityClass, ObjectSE primaryKey)
    主キーで検索します。
    <T> T
    find(ClassSE<T> entityClass, ObjectSE primaryKey, FindOption... options)
    指定された options を使用して、主キーによって指定されたエンティティクラスのインスタンスを検索します。
    <T> T
    find(ClassSE<T> entityClass, ObjectSE primaryKey, LockModeType lockMode)
    主キーで検索し、結果のエンティティに対して指定されたロック型を取得します。
    <T> T
    find(ClassSE<T> entityClass, ObjectSE primaryKey, LockModeType lockMode, MapSE<StringSE,ObjectSE> properties)
    主キーで検索し、指定されたプロパティを使用してエンティティをロックします。
    <T> T
    find(ClassSE<T> entityClass, ObjectSE primaryKey, MapSE<StringSE,ObjectSE> properties)
    指定されたプロパティを使用して、主キーで検索します。
    void
    永続化コンテキストに保持されている変更を基礎となるデータベースに同期します。
    この永続コンテキストのキャッシュ取得モード。
    この永続コンテキストのキャッシュストレージモード。
    CriteriaQuery オブジェクトの構築に使用できる CriteriaBuilder のインスタンスを取得します。
    利用可能な場合は、EntityManager の基になるプロバイダーオブジェクトを返します。
    EntityGraph という名前のファイルを取得します。
    <T> ListSE<EntityGraph<? super T>>
    getEntityGraphs(ClassSE<T> entityClass)
    指定されたエンティティクラス型に対して定義されている名前付き EntityGraph をすべて返します。
    永続化コンテキストに含まれるすべてのオブジェクトに適用されるフラッシュモードを取得します。
    指定された管理対象エンティティインスタンス上のこの永続コンテキストによって保持されている現在のロックモードを取得します。
    永続化ユニットに属するマネージド型を記述するメタモデルオブジェクトへのアクセスを提供する Metamodel インターフェースのインスタンスを取得します。
    このエンティティマネージャーに有効なプロパティとヒント、およびそれらに関連する値。
    <T> T
    getReference(ClassSE<T> entityClass, ObjectSE primaryKey)
    指定された主キーを持つ指定されたエンティティクラスのインスタンスへの参照を取得します。その状態は遅延フェッチできます。
    <T> T
    getReference(T entity)
    指定されたオブジェクトと同じ主キーを持つ、指定されたオブジェクトのエンティティクラスのインスタンスへの参照を取得します。その状態は遅延フェッチできます。
    リソースレベルの EntityTransaction オブジェクトを返します。
    boolean
    エンティティマネージャーが現在のトランザクションに参加しているかどうかを判断します。
    boolean
    エンティティマネージャーが開いているかどうかを確認します。
    void
    エンティティマネージャーに JTA トランザクションがアクティブであることを示し、永続コンテキストをそれに参加させます。
    void
    lock(ObjectSE entity, LockModeType lockMode)
    永続コンテキストに属するエンティティインスタンスをロックし、指定されたロックモードを取得します。
    void
    lock(ObjectSE entity, LockModeType lockMode, LockOption... options)
    指定された options を使用して、指定されたロックモードを取得し、永続コンテキストに属するエンティティインスタンスをロックします。
    void
    lock(ObjectSE entity, LockModeType lockMode, MapSE<StringSE,ObjectSE> properties)
    指定されたプロパティを使用して、指定されたロックモードを取得し、永続コンテキストに属するエンティティインスタンスをロックします。
    <T> T
    merge(T entity)
    指定された新しいエンティティインスタンスまたはデタッチされたエンティティインスタンスの状態を現在の永続コンテキストにマージします。その結果、永続コンテキストがデータベースと同期されているときに、それぞれ挿入または更新が行われる可能性があります。
    void
    新しいエンティティインスタンスを管理対象および永続化して、永続化コンテキストがデータベースと同期されるときにデータベースに挿入されるか、削除されたエンティティを管理対象にして、以前の remove(Object) 呼び出しの効果を取り消します。
    void
    データベースから指定された管理対象エンティティインスタンスの状態をリフレッシュし、エンティティに対して行われたフラッシュされていない変更があれば上書きします。
    void
    refresh(ObjectSE entity, LockModeType lockMode)
    データベースから指定された管理対象エンティティインスタンスの状態をリフレッシュし、エンティティに対して行われたフラッシュされていない変更があれば上書きし、指定されたロックモードを取得します。
    void
    refresh(ObjectSE entity, LockModeType lockMode, MapSE<StringSE,ObjectSE> properties)
    指定されたマネージドエンティティインスタンスの状態をデータベースからリフレッシュし、エンティティに対して行われたフラッシュされていない変更があれば上書きし、指定されたプロパティを使用して、指定されたロックモードを取得します。
    void
    refresh(ObjectSE entity, RefreshOption... options)
    指定された options を使用して、データベースから指定された管理対象エンティティインスタンスの状態をリフレッシュし、エンティティに加えられた変更があれば上書きします。
    void
    refresh(ObjectSE entity, MapSE<StringSE,ObjectSE> properties)
    指定されたプロパティを使用して、データベースから指定されたマネージドエンティティインスタンスの状態をリフレッシュし、エンティティに対して行われたフラッシュされていない変更があれば上書きします。
    void
    管理対象エンティティインスタンスを削除済みとしてマークすると、永続化コンテキストがデータベースと同期されるときにデータベースから削除されます。
    <C> void
    この EntityManager の基礎となるデータベース接続を使用して、指定されたアクションを実行します。
    void
    この永続コンテキストのデフォルトのキャッシュ取得モードを設定します。
    void
    この永続コンテキストのデフォルトのキャッシュストレージモードを設定します。
    void
    永続コンテキストに含まれるすべてのオブジェクトに適用されるフラッシュモードを設定します。
    void
    setProperty(StringSE propertyName, ObjectSE value)
    エンティティマネージャーのプロパティまたはヒントを設定します。
    <T> T
    unwrap(ClassSE<T> cls)
    指定された型のオブジェクトを返して、プロバイダー固有の API へのアクセスを許可します。
  • メソッドの詳細

    • persist

      void persist(ObjectSE entity)
      新しいエンティティインスタンスを管理対象および永続化して、永続化コンテキストがデータベースと同期されるときにデータベースに挿入されるか、削除されたエンティティを管理対象にして、以前の remove(Object) 呼び出しの効果を取り消します。この操作は、cascade=PERSIST とマークされた関連付けによって関連するすべてのエンティティにカスケードされます。指定されたエンティティインスタンスがすでに管理されている場合、つまり、すでにこの永続コンテキストに属しており、削除対象としてマークされていない場合、それ自体は無視されますが、操作は引き続きカスケードされます。
      パラメーター:
      entity - 新規、管理対象、削除されたエンティティインスタンス
      例外:
      EntityExistsException - 指定されたエンティティが切り離されている場合 (エンティティがデタッチされている場合、永続化操作が呼び出されたときに EntityExistsException がスローされるか、フラッシュまたはコミット時に EntityExistsException または別の PersistenceException がスローされる可能性があります。)
      IllegalArgumentExceptionSE - 指定されたインスタンスがエンティティではない場合
      TransactionRequiredException - PersistenceContextType.TRANSACTION 型のコンテナー管理エンティティマネージャーで呼び出されたときにトランザクションがない場合
    • merge

      <T> T merge(T entity)
      指定された新しいエンティティインスタンスまたはデタッチされたエンティティインスタンスの状態を現在の永続コンテキストにマージします。その結果、永続コンテキストがデータベースと同期されているときに、それぞれ挿入または更新が行われる可能性があります。指定されたエンティティインスタンスと同じ永続状態を持つマネージドインスタンスを返しますが、異なる Java オブジェクト ID を持ちます。指定されたエンティティがデタッチされた場合、返されたエンティティは同じ永続的な ID を持ちます。この操作は、cascade=MERGE とマークされた関連付けによって関連するすべてのエンティティにカスケードされます。指定されたエンティティインスタンスが管理されている場合、つまり、この永続コンテキストに属し、削除対象としてマークされていない場合、それ自体は無視されますが、操作は引き続きカスケードされ、直接返されます。
      パラメーター:
      entity - 新しい、管理された、分離されたエンティティインスタンス
      戻り値:
      状態がマージされたマネージドインスタンス
      例外:
      IllegalArgumentExceptionSE - インスタンスがエンティティではないか、削除されたエンティティである場合
      TransactionRequiredException - PersistenceContextType.TRANSACTION 型のコンテナー管理エンティティマネージャーで呼び出されたときにトランザクションがない場合
    • remove

      void remove(ObjectSE entity)
      管理対象エンティティインスタンスを削除済みとしてマークすると、永続化コンテキストがデータベースと同期されるときにデータベースから削除されます。この操作は、cascade=REMOVE とマークされた関連付けによって関連するすべてのエンティティにカスケードされます。指定されたエンティティインスタンスがすでに削除されている場合、無視されます。指定されたエンティティが新しい場合、それ自体は無視されますが、操作は引き続きカスケードされます。
      パラメーター:
      entity - 管理対象、新規、削除されたエンティティインスタンス
      例外:
      IllegalArgumentExceptionSE - インスタンスがエンティティではない場合、または分離されたエンティティである場合
      TransactionRequiredException - PersistenceContextType.TRANSACTION 型のコンテナー管理エンティティマネージャーで呼び出され、トランザクションがない場合
    • find

      <T> T find(ClassSE<T> entityClass, ObjectSE primaryKey)
      主キーで検索します。指定されたクラスと主キーのエンティティを検索します。エンティティインスタンスが永続コンテキストに含まれている場合、そこから返されます。
      パラメーター:
      entityClass - エンティティクラス
      primaryKey - 主キー
      戻り値:
      見つかったエンティティインスタンス、またはエンティティが存在しない場合は null
      例外:
      IllegalArgumentExceptionSE - 最初の引数がエンティティ型を示していない場合、または 2 番目の引数がそのエンティティの主キーに対して有効な型ではない場合、または null の場合
    • find

      <T> T find(ClassSE<T> entityClass, ObjectSE primaryKey, MapSE<StringSE,ObjectSE> properties)
      指定されたプロパティを使用して、主キーで検索します。指定したクラスのエンティティと主キーを検索します。エンティティインスタンスが永続コンテキストに含まれている場合は、そこから返されます。ベンダー固有のプロパティまたはヒントが認識されない場合、警告なしで無視されます。
      パラメーター:
      entityClass - エンティティクラス
      primaryKey - 主キー
      properties - 標準およびベンダー固有のプロパティとヒント
      戻り値:
      見つかったエンティティインスタンス、またはエンティティが存在しない場合は null
      例外:
      IllegalArgumentExceptionSE - 最初の引数がエンティティ型を示していない場合、または 2 番目の引数がそのエンティティの主キーに対して有効な型ではない場合、または null の場合
      導入:
      2.0
    • find

      <T> T find(ClassSE<T> entityClass, ObjectSE primaryKey, LockModeType lockMode)
      主キーで検索し、結果のエンティティに対して指定されたロック型を取得します。指定されたクラスと主キーのエンティティを検索し、指定されたロック型に従ってロックします。エンティティインスタンスが永続コンテキストに含まれている場合は、そこから返され、このメソッドの効果は、エンティティに対して lock(java.lang.Object, jakarta.persistence.LockModeType) メソッドが呼び出された場合と同じになります。

      エンティティが永続コンテキスト内で見つかり、ロックモード型がペシミスティックで、エンティティにバージョン属性がある場合、永続プロバイダはデータベースロックを取得するときにオプティミスティックバージョンチェックを実行する必要があります。これらのチェックが失敗すると、OptimisticLockException がスローされます。

      ロックモード型が悲観的で、エンティティインスタンスが見つかったがロックできない場合:

      • PessimisticLockException は、データベースのロックの失敗によりトランザクションレベルのロールバックが発生した場合にスローされます。
      • LockTimeoutException は、データベースロックの失敗によりステートメントレベルのロールバックのみが発生した場合にスローされます。
      パラメーター:
      entityClass - エンティティクラス
      primaryKey - 主キー
      lockMode - ロックモード
      戻り値:
      見つかったエンティティインスタンス、またはエンティティが存在しない場合は null
      例外:
      IllegalArgumentExceptionSE - 最初の引数がエンティティ型を示していない場合、または 2 番目の引数がそのエンティティの主キーの有効な型ではない場合、または null の場合
      TransactionRequiredException - トランザクションがなく、NONE 以外のロックモードが指定されている場合、または現在のトランザクションに参加していないエンティティマネージャーで呼び出され、NONE 以外のロックモードが指定されている場合
      OptimisticLockException - 楽観的なバージョンチェックが失敗した場合
      PessimisticLockException - 悲観的ロックが失敗し、トランザクションがロールバックされた場合
      LockTimeoutException - 悲観的ロックが失敗し、ステートメントのみがロールバックされる場合
      PersistenceException - サポートされていないロック呼び出しが行われた場合
      導入:
      2.0
    • find

      <T> T find(ClassSE<T> entityClass, ObjectSE primaryKey, LockModeType lockMode, MapSE<StringSE,ObjectSE> properties)
      主キーで検索し、指定されたプロパティを使用してエンティティをロックします。指定されたクラスと主キーのエンティティを検索し、指定されたロック型に従ってロックします。エンティティインスタンスが永続コンテキストに含まれている場合は、そこから返されます。

      エンティティが永続コンテキスト内で見つかり、ロックモード型がペシミスティックで、エンティティにバージョン属性がある場合、永続プロバイダはデータベースロックを取得するときにオプティミスティックバージョンチェックを実行する必要があります。これらのチェックが失敗すると、OptimisticLockException がスローされます。

      ロックモード型が悲観的で、エンティティインスタンスが見つかったがロックできない場合:

      • PessimisticLockException は、データベースのロックの失敗によりトランザクションレベルのロールバックが発生した場合にスローされます。
      • LockTimeoutException は、データベースロックの失敗によりステートメントレベルのロールバックのみが発生した場合にスローされます。

      ベンダー固有のプロパティまたはヒントが認識されない場合、警告なしで無視されます。

      ポータブルアプリケーションは、標準のタイムアウトヒントに依存するべきではありません。使用中のデータベースとプロバイダーが使用するロックメカニズムに応じて、ヒントが表示される場合と表示されない場合があります。

      パラメーター:
      entityClass - エンティティクラス
      primaryKey - 主キー
      lockMode - ロックモード
      properties - 標準およびベンダー固有のプロパティとヒント
      戻り値:
      見つかったエンティティインスタンス、またはエンティティが存在しない場合は null
      例外:
      IllegalArgumentExceptionSE - 最初の引数がエンティティ型を示していない場合、または 2 番目の引数がそのエンティティの主キーの有効な型ではない場合、または null の場合
      TransactionRequiredException - トランザクションがなく、NONE 以外のロックモードが指定されている場合、または現在のトランザクションに参加していないエンティティマネージャーで呼び出され、NONE 以外のロックモードが指定されている場合
      OptimisticLockException - 楽観的なバージョンチェックが失敗した場合
      PessimisticLockException - 悲観的ロックが失敗し、トランザクションがロールバックされた場合
      LockTimeoutException - 悲観的ロックが失敗し、ステートメントのみがロールバックされる場合
      PersistenceException - サポートされていないロック呼び出しが行われた場合
      導入:
      2.0
    • find

      <T> T find(ClassSE<T> entityClass, ObjectSE primaryKey, FindOption... options)
      指定されたオプションを使用して、主キーによって指定されたエンティティクラスのインスタンスを検索します。指定されたクラスと主キーを持つエンティティを検索します。指定されたオプションに LockModeType が含まれている場合は、指定されたロック型に関してそれをロックします。エンティティインスタンスが永続コンテキストに含まれている場合は、そこから返されます。

      エンティティが永続コンテキスト内で見つかり、ロックモード型がペシミスティックで、エンティティにバージョン属性がある場合、永続プロバイダはデータベースロックを取得するときにオプティミスティックバージョンチェックを実行する必要があります。これらのチェックが失敗すると、OptimisticLockException がスローされます。

      ロックモード型が悲観的で、エンティティインスタンスが見つかったがロックできない場合:

      • PessimisticLockException は、データベースのロックの失敗によりトランザクションレベルのロールバックが発生した場合にスローされます。
      • LockTimeoutException は、データベースロックの失敗によりステートメントレベルのロールバックのみが発生した場合にスローされます。

      ベンダー固有のオプションが認識されない場合、確認なしで無視されます。

      ポータブルアプリケーションは、標準のタイムアウトオプションに依存しないでください。使用中のデータベースとプロバイダーが使用するロックメカニズムに応じて、このオプションが遵守される場合と遵守されない場合があります。

      パラメーター:
      entityClass - エンティティクラス
      primaryKey - 主キー
      options - 標準およびベンダー固有のオプション
      戻り値:
      見つかったエンティティインスタンス、またはエンティティが存在しない場合は null
      例外:
      IllegalArgumentExceptionSE - 矛盾するオプションがある場合、最初の引数が永続化ユニットに属するエンティティ型を示していない場合、または 2 番目の引数がエンティティの主キー型の有効な非 null インスタンスではない場合
      TransactionRequiredException - トランザクションがなく、NONE 以外のロックモードが指定されている場合、または現在のトランザクションに参加していないエンティティマネージャーで呼び出され、NONE 以外のロックモードが指定されている場合
      OptimisticLockException - 楽観的なバージョンチェックが失敗した場合
      PessimisticLockException - 悲観的ロックが失敗し、トランザクションがロールバックされた場合
      LockTimeoutException - 悲観的ロックが失敗し、ステートメントのみがロールバックされる場合
      PersistenceException - サポートされていないロック呼び出しが行われた場合
      導入:
      3.2
    • find

      <T> T find(EntityGraph<T> entityGraph, ObjectSE primaryKey, FindOption... options)
      指定されたオプションを使用し、EntityGraph をロードグラフとして解釈して、主キーによって指定された EntityGraph のルートエンティティのインスタンスを検索します。指定された型と主キーを持つエンティティを検索します。指定されたオプションに LockModeType が含まれている場合は、指定されたロック型に関してそれをロックします。エンティティインスタンスが永続コンテキストに含まれている場合は、そこから返されます。

      エンティティが永続コンテキスト内で見つかり、ロックモード型がペシミスティックで、エンティティにバージョン属性がある場合、永続プロバイダはデータベースロックを取得するときにオプティミスティックバージョンチェックを実行する必要があります。これらのチェックが失敗すると、OptimisticLockException がスローされます。

      ロックモード型が悲観的で、エンティティインスタンスが見つかったがロックできない場合:

      • PessimisticLockException は、データベースのロックの失敗によりトランザクションレベルのロールバックが発生した場合にスローされます。
      • LockTimeoutException は、データベースロックの失敗によりステートメントレベルのロールバックのみが発生した場合にスローされます。

      ベンダー固有のオプションが認識されない場合、確認なしで無視されます。

      ポータブルアプリケーションは、標準のタイムアウトオプションに依存しないでください。使用中のデータベースとプロバイダーが使用するロックメカニズムに応じて、このオプションが遵守される場合と遵守されない場合があります。

      パラメーター:
      entityGraph - 負荷グラフとして解釈されるエンティティグラフ
      primaryKey - 主キー
      options - 標準およびベンダー固有のオプション
      戻り値:
      見つかったエンティティインスタンス、またはエンティティが存在しない場合は null
      例外:
      IllegalArgumentExceptionSE - 矛盾するオプションがある場合、最初の引数が永続化ユニットに属するエンティティ型を示していない場合、または 2 番目の引数がエンティティの主キー型の有効な非 null インスタンスではない場合
      TransactionRequiredException - トランザクションがなく、NONE 以外のロックモードが指定されている場合、または現在のトランザクションに参加していないエンティティマネージャーで呼び出され、NONE 以外のロックモードが指定されている場合
      OptimisticLockException - 楽観的なバージョンチェックが失敗した場合
      PessimisticLockException - 悲観的ロックが失敗し、トランザクションがロールバックされた場合
      LockTimeoutException - 悲観的ロックが失敗し、ステートメントのみがロールバックされる場合
      PersistenceException - サポートされていないロック呼び出しが行われた場合
      導入:
      3.2
    • getReference

      <T> T getReference(ClassSE<T> entityClass, ObjectSE primaryKey)
      指定された主キーを持つ指定されたエンティティクラスのインスタンスへの参照を取得します。その状態は遅延フェッチできます。

      リクエストされたインスタンスがデータベースに存在しない場合、インスタンスの状態に最初にアクセスしたときに EntityNotFoundException がスローされます。(永続性プロバイダーランタイムは、getReference() が呼び出されたときに EntityNotFoundException をスローすることが許可されていますが、必須ではありません。)

      この操作により、アプリケーションはデータベースから状態をロードせずにエンティティへの関連付けを作成できます。

      アプリケーションは、エンティティマネージャーが開いている間にアプリケーションによってアクセスされた場合を除き、デタッチ時にインスタンスの状態が利用可能になることを予期すべきではありません。

      パラメーター:
      entityClass - エンティティクラス
      primaryKey - 主キー
      戻り値:
      エンティティインスタンスへの参照
      例外:
      IllegalArgumentExceptionSE - 最初の引数がエンティティ型を示していない場合、または 2 番目の引数がそのエンティティの主キーの有効な型ではない場合、または null の場合
      EntityNotFoundException - エンティティの状態にアクセスできない場合
    • getReference

      <T> T getReference(T entity)
      指定されたオブジェクトと同じ主キーを持つ、指定されたオブジェクトのエンティティクラスのインスタンスへの参照を取得します。その状態は遅延フェッチできます。指定されたオブジェクトは永続的または分離されている可能性がありますが、新規でも削除されてもいない可能性があります。

      リクエストされたインスタンスがデータベースに存在しない場合、インスタンスの状態に最初にアクセスしたときに EntityNotFoundException がスローされます。(永続性プロバイダーランタイムは、getReference() が呼び出されたときに EntityNotFoundException をスローすることが許可されていますが、必須ではありません。)

      この操作により、アプリケーションはデータベースから状態をロードせずにエンティティへの関連付けを作成できます。

      アプリケーションは、エンティティマネージャーが開いている間にアプリケーションによってアクセスされた場合を除き、デタッチ時にインスタンスの状態が利用可能になることを予期すべきではありません。

      パラメーター:
      entity - 永続的または分離されたエンティティインスタンス
      戻り値:
      エンティティインスタンスへの参照
      例外:
      IllegalArgumentExceptionSE - 指定されたオブジェクトがエンティティではない場合、または永続的でも分離でもない場合
      EntityNotFoundException - エンティティの状態にアクセスできない場合
      導入:
      3.2
    • flush

      void flush()
      永続化コンテキストに保持されている変更を基礎となるデータベースに同期します。
      例外:
      TransactionRequiredException - トランザクションがない場合、またはエンティティマネージャーが現在のトランザクションに参加していない場合
      PersistenceException - フラッシュが失敗した場合
    • setFlushMode

      void setFlushMode(FlushModeType flushMode)
      永続コンテキストに含まれるすべてのオブジェクトに適用されるフラッシュモードを設定します。
      パラメーター:
      flushMode - フラッシュモード
    • getFlushMode

      FlushModeType getFlushMode()
      永続化コンテキストに含まれるすべてのオブジェクトに適用されるフラッシュモードを取得します。
      戻り値:
      現在の FlushModeType
    • lock

      void lock(ObjectSE entity, LockModeType lockMode)
      永続コンテキストに属するエンティティインスタンスをロックし、指定されたロックモードを取得します。

      ペシミスティックロックモード型が指定され、エンティティにバージョン属性が含まれている場合、永続プロバイダーはデータベースロックを取得するときにオプティミスティックバージョンチェックも実行する必要があります。これらのチェックが失敗すると、OptimisticLockException がスローされます。

      ロックモード型が悲観的で、エンティティインスタンスが見つかったがロックできない場合:

      • PessimisticLockException は、データベースのロックの失敗によりトランザクションレベルのロールバックが発生した場合にスローされます。
      • LockTimeoutException は、データベースロックの失敗によりステートメントレベルのロールバックのみが発生した場合にスローされます。
      パラメーター:
      entity - 管理対象エンティティのインスタンス
      lockMode - ロックモード
      例外:
      IllegalArgumentExceptionSE - インスタンスがエンティティではない場合、または分離されたエンティティである場合
      TransactionRequiredException - トランザクションがない場合、または現在のトランザクションに参加していないエンティティマネージャーで呼び出された場合
      EntityNotFoundException - 悲観的ロックが実行されたときにエンティティがデータベースに存在しない場合
      OptimisticLockException - 楽観的なバージョンチェックが失敗した場合
      PessimisticLockException - 悲観的ロックが失敗し、トランザクションがロールバックされた場合
      LockTimeoutException - 悲観的ロックが失敗し、ステートメントのみがロールバックされる場合
      PersistenceException - サポートされていないロック呼び出しが行われた場合
    • lock

      void lock(ObjectSE entity, LockModeType lockMode, MapSE<StringSE,ObjectSE> properties)
      指定されたプロパティを使用して、指定されたロックモードを取得し、永続コンテキストに属するエンティティインスタンスをロックします。

      ペシミスティックロックモード型が指定され、エンティティにバージョン属性が含まれている場合、永続プロバイダーはデータベースロックを取得するときにオプティミスティックバージョンチェックも実行する必要があります。これらのチェックが失敗すると、OptimisticLockException がスローされます。

      ロックモード型が悲観的で、エンティティインスタンスが見つかったがロックできない場合:

      • PessimisticLockException は、データベースのロックの失敗によりトランザクションレベルのロールバックが発生した場合にスローされます。
      • LockTimeoutException は、データベースのロックの失敗によりステートメントレベルのロールバックのみが発生した場合にスローされます。

      ベンダー固有のプロパティまたはヒントが認識されない場合、警告なしで無視されます。

      ポータブルアプリケーションは、標準のタイムアウトヒントに依存するべきではありません。使用中のデータベースとプロバイダーが使用するロックメカニズムに応じて、ヒントが表示される場合と表示されない場合があります。

      パラメーター:
      entity - 管理対象エンティティのインスタンス
      lockMode - ロックモード
      properties - 標準およびベンダー固有のプロパティとヒント
      例外:
      IllegalArgumentExceptionSE - インスタンスがエンティティではない場合、または分離されたエンティティである場合
      TransactionRequiredException - トランザクションがない場合、または現在のトランザクションに参加していないエンティティマネージャーで呼び出された場合
      EntityNotFoundException - 悲観的ロックが実行されたときにエンティティがデータベースに存在しない場合
      OptimisticLockException - 楽観的なバージョンチェックが失敗した場合
      PessimisticLockException - 悲観的ロックが失敗し、トランザクションがロールバックされた場合
      LockTimeoutException - 悲観的ロックが失敗し、ステートメントのみがロールバックされる場合
      PersistenceException - サポートされていないロック呼び出しが行われた場合
      導入:
      2.0
    • lock

      void lock(ObjectSE entity, LockModeType lockMode, LockOption... options)
      指定された options を使用して、指定されたロックモードを取得し、永続コンテキストに属するエンティティインスタンスをロックします。

      ペシミスティックロックモード型が指定され、エンティティにバージョン属性が含まれている場合、永続プロバイダーはデータベースロックを取得するときにオプティミスティックバージョンチェックも実行する必要があります。これらのチェックが失敗すると、OptimisticLockException がスローされます。

      ロックモード型が悲観的で、エンティティインスタンスが見つかったがロックできない場合:

      • PessimisticLockException は、データベースのロックの失敗によりトランザクションレベルのロールバックが発生した場合にスローされます。
      • LockTimeoutException は、データベースロックの失敗によりステートメントレベルのロールバックのみが発生した場合にスローされます。

      ベンダー固有の LockOption が認識されない場合は、通知なく無視されます。

      ポータブルアプリケーションは、標準のタイムアウトオプションに依存しないでください。使用中のデータベースとプロバイダーが使用するロックメカニズムに応じて、このオプションが遵守される場合と遵守されない場合があります。

      パラメーター:
      entity - 管理対象エンティティのインスタンス
      lockMode - ロックモード
      options - 標準およびベンダー固有のオプション
      例外:
      IllegalArgumentExceptionSE - インスタンスがエンティティではない場合、または分離されたエンティティである場合
      TransactionRequiredException - トランザクションがない場合、または現在のトランザクションに参加していないエンティティマネージャーで呼び出された場合
      EntityNotFoundException - 悲観的ロックが実行されたときにエンティティがデータベースに存在しない場合
      OptimisticLockException - 楽観的なバージョンチェックが失敗した場合
      PessimisticLockException - 悲観的ロックが失敗し、トランザクションがロールバックされた場合
      LockTimeoutException - 悲観的ロックが失敗し、ステートメントのみがロールバックされる場合
      PersistenceException - サポートされていないロック呼び出しが行われた場合
      導入:
      3.2
    • refresh

      void refresh(ObjectSE entity)
      データベースから指定された管理対象エンティティインスタンスの状態をリフレッシュし、エンティティに対して行われたフラッシュされていない変更があれば上書きします。この操作は、cascade=REFRESH とマークされた関連付けによって関連するすべてのエンティティにカスケードされます。
      パラメーター:
      entity - 管理対象エンティティのインスタンス
      例外:
      IllegalArgumentExceptionSE - インスタンスがエンティティではない場合、またはエンティティが管理されていない場合
      TransactionRequiredException - PersistenceContextType.TRANSACTION 型のコンテナー管理エンティティマネージャーで呼び出されたときにトランザクションがない場合
      EntityNotFoundException - エンティティがデータベースに存在しない場合
    • refresh

      void refresh(ObjectSE entity, MapSE<StringSE,ObjectSE> properties)
      指定されたプロパティを使用して、データベースから指定されたマネージドエンティティインスタンスの状態をリフレッシュし、エンティティに対して行われたフラッシュされていない変更があれば上書きします。この操作は、cascade=REFRESH とマークされた関連付けによって関連するすべてのエンティティにカスケードされます。

      ベンダー固有のプロパティまたはヒントが認識されない場合、警告なしで無視されます。

      パラメーター:
      entity - 管理対象エンティティのインスタンス
      properties - 標準およびベンダー固有のプロパティとヒント
      例外:
      IllegalArgumentExceptionSE - インスタンスがエンティティではない場合、またはエンティティが管理されていない場合
      TransactionRequiredException - PersistenceContextType.TRANSACTION 型のコンテナー管理エンティティマネージャーで呼び出されたときにトランザクションがない場合
      EntityNotFoundException - エンティティがデータベースに存在しない場合
      導入:
      2.0
    • refresh

      void refresh(ObjectSE entity, LockModeType lockMode)
      指定された管理対象エンティティインスタンスの状態をデータベースからリフレッシュし、エンティティに対して行われたフラッシュされていない変更があればそれを上書きして、指定されたロックモードを取得します。この操作は、cascade=REFRESH とマークされた関連付けによって関連付けられているすべてのエンティティにカスケードされます。

      ロックモード型が悲観的で、エンティティインスタンスが見つかったがロックできない場合:

      • PessimisticLockException は、データベースのロックの失敗によりトランザクションレベルのロールバックが発生した場合にスローされます。
      • LockTimeoutException は、データベースロックの失敗によりステートメントレベルのロールバックのみが発生した場合にスローされます。
      パラメーター:
      entity - 管理対象エンティティのインスタンス
      lockMode - ロックモード
      例外:
      IllegalArgumentExceptionSE - インスタンスがエンティティではない場合、またはエンティティが管理されていない場合
      TransactionRequiredException - トランザクションがないときに型 PersistenceContextType.TRANSACTION のコンテナー管理エンティティマネージャーで呼び出された場合。トランザクションがなく、LockModeType.NONE 以外のロックモードが指定されたときに拡張エンティティマネージャーで呼び出された場合。または、現在のトランザクションに参加していない拡張エンティティマネージャーで呼び出され、NONE 以外のロックモードが指定された場合
      EntityNotFoundException - エンティティがデータベースに存在しない場合
      PessimisticLockException - 悲観的ロックが失敗し、トランザクションがロールバックされた場合
      LockTimeoutException - 悲観的ロックが失敗し、ステートメントのみがロールバックされる場合
      PersistenceException - サポートされていないロック呼び出しが行われた場合
      導入:
      2.0
    • refresh

      void refresh(ObjectSE entity, LockModeType lockMode, MapSE<StringSE,ObjectSE> properties)
      指定された管理対象エンティティインスタンスの状態をデータベースからリフレッシュし、エンティティに対して行われたフラッシュされていない変更があればそれを上書きし、指定されたプロパティを使用して、指定されたロックモードを取得します。この操作は、cascade=REFRESH とマークされた関連付けによって関連付けられているすべてのエンティティにカスケードされます。

      ロックモード型が悲観的で、エンティティインスタンスが見つかったがロックできない場合:

      • PessimisticLockException は、データベースのロックの失敗によりトランザクションレベルのロールバックが発生した場合にスローされます。
      • LockTimeoutException は、データベースロックの失敗によりステートメントレベルのロールバックのみが発生した場合にスローされます。

      ベンダー固有のプロパティまたはヒントが認識されない場合、警告なしで無視されます。

      ポータブルアプリケーションは、標準のタイムアウトヒントに依存するべきではありません。使用中のデータベースとプロバイダーが使用するロックメカニズムに応じて、ヒントが表示される場合と表示されない場合があります。

      パラメーター:
      entity - 管理対象エンティティのインスタンス
      lockMode - ロックモード
      properties - 標準およびベンダー固有のプロパティとヒント
      例外:
      IllegalArgumentExceptionSE - インスタンスがエンティティではない場合、またはエンティティが管理されていない場合
      TransactionRequiredException - トランザクションがないときに型 PersistenceContextType.TRANSACTION のコンテナー管理エンティティマネージャーで呼び出された場合。トランザクションがなく、LockModeType.NONE 以外のロックモードが指定されたときに拡張エンティティマネージャーで呼び出された場合。または、現在のトランザクションに参加していない拡張エンティティマネージャーで呼び出され、NONE 以外のロックモードが指定された場合
      EntityNotFoundException - エンティティがデータベースに存在しない場合
      PessimisticLockException - 悲観的ロックが失敗し、トランザクションがロールバックされた場合
      LockTimeoutException - 悲観的ロックが失敗し、ステートメントのみがロールバックされる場合
      PersistenceException - サポートされていないロック呼び出しが行われた場合
      導入:
      2.0
    • refresh

      void refresh(ObjectSE entity, RefreshOption... options)
      指定された options を使用して、データベースから指定された管理対象エンティティインスタンスの状態をリフレッシュし、エンティティに加えられた変更があればそれを上書きします。指定された options に LockModeType が含まれている場合は、指定されたエンティティをロックし、指定されたロックモードを取得します。この操作は、cascade=REFRESH とマークされた関連付けによって関連付けられているすべてのエンティティにカスケードされます。

      ロックモード型が悲観的で、エンティティインスタンスが見つかったがロックできない場合:

      • PessimisticLockException は、データベースのロックの失敗によりトランザクションレベルのロールバックが発生した場合にスローされます。
      • LockTimeoutException は、データベースロックの失敗によりステートメントレベルのロールバックのみが発生した場合にスローされます。

      ベンダー固有の RefreshOption が認識されない場合は、通知なく無視されます。

      ポータブルアプリケーションでは、標準のタイムアウトオプションに依存すべきではありません。使用中のデータベースとプロバイダーが使用するロックメカニズムに応じて、ヒントが遵守される場合と遵守されない場合があります。

      パラメーター:
      entity - 管理対象エンティティのインスタンス
      options - 標準およびベンダー固有のオプション
      例外:
      IllegalArgumentExceptionSE - インスタンスがエンティティではない場合、またはエンティティが管理されていない場合
      TransactionRequiredException - トランザクションがないときに型 PersistenceContextType.TRANSACTION のコンテナー管理エンティティマネージャーで呼び出された場合。トランザクションがなく、LockModeType.NONE 以外のロックモードが指定されたときに拡張エンティティマネージャーで呼び出された場合。または、現在のトランザクションに参加していない拡張エンティティマネージャーで呼び出され、NONE 以外のロックモードが指定された場合
      EntityNotFoundException - エンティティがデータベースに存在しない場合
      PessimisticLockException - 悲観的ロックが失敗し、トランザクションがロールバックされた場合
      LockTimeoutException - 悲観的ロックが失敗し、ステートメントのみがロールバックされる場合
      PersistenceException - サポートされていないロック呼び出しが行われた場合
      導入:
      3.2
    • clear

      void clear()
      永続化コンテキストをクリアすると、すべての管理対象エンティティが切り離されます。まだデータベースにフラッシュされていないエンティティに加えられた変更は永続化されません。
    • detach

      void detach(ObjectSE entity)
      指定された管理対象エンティティまたは削除されたエンティティを永続コンテキストから削除し、エンティティを即座に切り離します。エンティティに対して行われたフラッシュされていない変更 (エンティティの削除を含む) は、データベースに同期されません。指定されたエンティティを参照する管理対象エンティティは、引き続きそのエンティティを参照します。この操作は、cascade=DETACH とマークされた関連付けによって関連するすべてのエンティティにカスケードされます。指定されたエンティティインスタンスが新しい場合、または切り離されている場合、つまり、この永続コンテキストに関連付けられていない場合、そのインスタンスは無視されます。
      パラメーター:
      entity - 管理対象または削除されたエンティティインスタンス
      例外:
      IllegalArgumentExceptionSE - インスタンスがエンティティではない場合
      導入:
      2.0
    • contains

      boolean contains(ObjectSE entity)
      指定されたオブジェクトが現在の永続コンテキストに属する管理対象エンティティインスタンスであるかどうかを判断します。
      パラメーター:
      entity - エンティティインスタンス
      戻り値:
      エンティティが永続コンテキストに属しているかどうかを示すブール値
      例外:
      IllegalArgumentExceptionSE - エンティティでない場合
    • getLockMode

      LockModeType getLockMode(ObjectSE entity)
      指定された管理対象エンティティインスタンス上のこの永続コンテキストによって保持されている現在のロックモードを取得します。
      パラメーター:
      entity - 管理対象エンティティのインスタンス
      戻り値:
      現在保持されているロックモード
      例外:
      TransactionRequiredException - アクティブなトランザクションがない場合、またはエンティティマネージャーが現在のトランザクションに参加していない場合
      IllegalArgumentExceptionSE - トランザクションがアクティブであるが、指定されたインスタンスが管理対象エンティティではない場合
      導入:
      2.0
    • setCacheRetrieveMode

      void setCacheRetrieveMode(CacheRetrieveMode cacheRetrieveMode)
      この永続コンテキストのデフォルトのキャッシュ取得モードを設定します。
      パラメーター:
      cacheRetrieveMode - キャッシュ取得モード
      導入:
      3.2
    • setCacheStoreMode

      void setCacheStoreMode(CacheStoreMode cacheStoreMode)
      この永続コンテキストのデフォルトのキャッシュストレージモードを設定します。
      パラメーター:
      cacheStoreMode - キャッシュストレージモード
      導入:
      3.2
    • getCacheRetrieveMode

      CacheRetrieveMode getCacheRetrieveMode()
      この永続コンテキストのキャッシュ取得モード。
      導入:
      3.2
    • getCacheStoreMode

      CacheStoreMode getCacheStoreMode()
      この永続コンテキストのキャッシュストレージモード。
      導入:
      3.2
    • setProperty

      void setProperty(StringSE propertyName, ObjectSE value)
      エンティティマネージャーのプロパティまたはヒントを設定します。ベンダー固有のプロパティまたはヒントが認識されない場合、警告なしで無視されます。
      パラメーター:
      propertyName - プロパティまたはヒントの名前
      value - プロパティまたはヒントの値
      例外:
      IllegalArgumentExceptionSE - プロパティまたはヒント名が実装によって認識されるが、2 番目の引数が有効な値ではない場合
      導入:
      2.0
    • getProperties

      MapSE<StringSE,ObjectSE> getProperties()
      このエンティティマネージャーに有効なプロパティとヒント、およびそれらに関連する値。返されたマップの内容を変更しても、有効な構成は変更されません。
      戻り値:
      現在有効なプロパティとヒントのマップ
      導入:
      2.0
    • createQuery

      Query createQuery(StringSE qlString)
      Jakarta Persistence クエリ言語ステートメントを実行するための Query のインスタンスを作成します。
      パラメーター:
      qlString - Jakarta Persistence クエリ文字列
      戻り値:
      新しいクエリインスタンス
      例外:
      IllegalArgumentExceptionSE - クエリ文字列が無効であることが判明した場合
    • createQuery

      <T> TypedQuery<T> createQuery(CriteriaQuery<T> criteriaQuery)
      条件クエリを実行するための TypedQuery のインスタンスを作成します。
      パラメーター:
      criteriaQuery - 条件クエリオブジェクト
      戻り値:
      新しいクエリインスタンス
      例外:
      IllegalArgumentExceptionSE - 条件クエリが無効であることが判明した場合
      導入:
      2.0
    • createQuery

      <T> TypedQuery<T> createQuery(CriteriaSelect<T> selectQuery)
      条件クエリを実行するための TypedQuery のインスタンスを作成します。条件クエリは、トップレベルクエリの結合または交差である場合があります。
      パラメーター:
      selectQuery - 条件クエリオブジェクト
      戻り値:
      新しいクエリインスタンス
      例外:
      IllegalArgumentExceptionSE - 条件クエリが無効であることが判明した場合
      導入:
      3.2
    • createQuery

      Query createQuery(CriteriaUpdate<?> updateQuery)
      条件更新クエリを実行するための Query のインスタンスを作成します。
      パラメーター:
      updateQuery - 条件更新クエリオブジェクト
      戻り値:
      新しいクエリインスタンス
      例外:
      IllegalArgumentExceptionSE - 更新クエリが無効であることが判明した場合
      導入:
      2.1
    • createQuery

      Query createQuery(CriteriaDelete<?> deleteQuery)
      条件削除クエリを実行するための Query のインスタンスを作成します。
      パラメーター:
      deleteQuery - 条件削除クエリオブジェクト
      戻り値:
      新しいクエリインスタンス
      例外:
      IllegalArgumentExceptionSE - 削除クエリが無効であることが判明した場合
      導入:
      2.1
    • createQuery

      <T> TypedQuery<T> createQuery(StringSE qlString, ClassSE<T> resultClass)
      Jakarta Persistence クエリ言語ステートメントを実行するための TypedQuery のインスタンスを作成します。クエリの選択リストには 1 つの項目のみが含まれている必要があり、その項目は resultClass 引数で指定された型に割り当て可能である必要があります。
      パラメーター:
      qlString - Jakarta Persistence クエリ文字列
      resultClass - クエリ結果の型
      戻り値:
      新しいクエリインスタンス
      例外:
      IllegalArgumentExceptionSE - クエリ文字列が無効であることが判明した場合、またはクエリ結果が指定された型に割り当て可能でないことが判明した場合
      導入:
      2.0
    • createNamedQuery

      Query createNamedQuery(StringSE name)
      Jakarta Persistence クエリ言語またはネイティブ SQL で記述された名前付きクエリを実行するための Query のインスタンスを作成します。
      パラメーター:
      name - メタデータで定義されたクエリの名前
      戻り値:
      新しいクエリインスタンス
      例外:
      IllegalArgumentExceptionSE - クエリが指定された名前で定義されていない場合、またはクエリ文字列が無効であることが判明した場合
      関連事項:
    • createNamedQuery

      <T> TypedQuery<T> createNamedQuery(StringSE name, ClassSE<T> resultClass)
      Jakarta Persistence クエリ言語の名前付きクエリを実行するための TypedQuery のインスタンスを作成します。クエリの選択リストには、resultClass 引数で指定された型に割り当て可能な単一の項目のみを含める必要があります。
      パラメーター:
      name - メタデータで定義されたクエリの名前
      resultClass - クエリ結果の型
      戻り値:
      新しいクエリインスタンス
      例外:
      IllegalArgumentExceptionSE - クエリが指定された名前で定義されていない場合、クエリ文字列が無効であることが判明した場合、クエリ結果が指定された型に割り当て可能でないことが判明した場合
      導入:
      2.0
    • createQuery

      <T> TypedQuery<T> createQuery(TypedQueryReference<T> reference)
      Jakarta Persistence クエリ言語またはネイティブ SQL で記述された名前付きクエリを実行するための TypedQuery のインスタンスを作成します。
      パラメーター:
      reference - メタデータで定義されたクエリへの参照
      戻り値:
      新しいクエリインスタンス
      例外:
      IllegalArgumentExceptionSE - クエリが定義されていない場合、クエリ文字列が無効であることが判明した場合、クエリ結果が指定された型に割り当てられないことが判明した場合
      関連事項:
    • createNativeQuery

      Query createNativeQuery(StringSE sqlString)
      更新や削除など、ネイティブ SQL ステートメントを実行するための Query のインスタンスを作成します。

      クエリが更新クエリまたは削除クエリではない場合、クエリを実行すると、SQL 結果の各行が Object[] 型の結果として返されます (選択リストに列が 1 つしかない場合は、Object 型の結果が返されます)。値は選択リスト内の出現順に返され、デフォルトの JDBC 型マッピングが適用されます。

      パラメーター:
      sqlString - ネイティブ SQL クエリ文字列
      戻り値:
      新しいクエリインスタンス
    • createNativeQuery

      <T> Query createNativeQuery(StringSE sqlString, ClassSE<T> resultClass)
      ネイティブ SQL クエリを実行するための Query のインスタンスを作成します。

      この API の次のリリースでは、このメソッドの戻り値の型は TypedQuery<T> に変更されます

      パラメーター:
      sqlString - ネイティブ SQL クエリ文字列
      resultClass - クエリ結果の型
      戻り値:
      新しいクエリインスタンス
    • createNativeQuery

      Query createNativeQuery(StringSE sqlString, StringSE resultSetMapping)
      ネイティブ SQL クエリを実行するための Query のインスタンスを作成します。
      パラメーター:
      sqlString - ネイティブ SQL クエリ文字列
      resultSetMapping - 結果セットマッピングの名前
      戻り値:
      新しいクエリインスタンス
    • createNamedStoredProcedureQuery

      StoredProcedureQuery createNamedStoredProcedureQuery(StringSE name)
      データベース内のストアドプロシージャを実行するための StoredProcedureQuery のインスタンスを作成します。

      ストアドプロシージャを実行する前に、パラメーターを登録する必要があります。

      ストアドプロシージャが 1 つ以上の結果セットを返す場合、すべての結果セットは Object[] 型のリストとして返されます。

      パラメーター:
      name - メタデータでストアドプロシージャクエリに割り当てられた名前
      戻り値:
      新しいストアドプロシージャのクエリインスタンス
      例外:
      IllegalArgumentExceptionSE - 指定された名前でクエリが定義されていない場合
      導入:
      2.1
    • createStoredProcedureQuery

      StoredProcedureQuery createStoredProcedureQuery(StringSE procedureName)
      データベース内のストアドプロシージャを実行するための StoredProcedureQuery のインスタンスを作成します。

      ストアドプロシージャを実行する前に、パラメーターを登録する必要があります。

      ストアドプロシージャが 1 つ以上の結果セットを返す場合、すべての結果セットは Object[] 型のリストとして返されます。

      パラメーター:
      procedureName - データベース内のストアドプロシージャの名前
      戻り値:
      新しいストアドプロシージャのクエリインスタンス
      例外:
      IllegalArgumentExceptionSE - 指定された名前のストアドプロシージャが存在しない場合 (またはクエリの実行が失敗する場合は)
      導入:
      2.1
    • createStoredProcedureQuery

      StoredProcedureQuery createStoredProcedureQuery(StringSE procedureName, ClassSE<?>... resultClasses)
      データベース内のストアドプロシージャを実行するための StoredProcedureQuery のインスタンスを作成します。

      ストアドプロシージャを実行する前に、パラメーターを登録する必要があります。

      resultClass 引数は、ストアドプロシージャの呼び出しによって結果セットが返される順序で指定する必要があります。

      パラメーター:
      procedureName - データベース内のストアドプロシージャの名前
      resultClasses - ストアドプロシージャによって生成された結果セットがマップされるクラス
      戻り値:
      新しいストアドプロシージャのクエリインスタンス
      例外:
      IllegalArgumentExceptionSE - 指定された名前のストアドプロシージャが存在しない場合 (またはクエリの実行が失敗する場合は)
      導入:
      2.1
    • createStoredProcedureQuery

      StoredProcedureQuery createStoredProcedureQuery(StringSE procedureName, StringSE... resultSetMappings)
      データベース内のストアドプロシージャを実行するための StoredProcedureQuery のインスタンスを作成します。

      ストアドプロシージャを実行する前に、パラメーターを登録する必要があります。

      resultSetMapping 引数は、ストアドプロシージャの呼び出しによって結果セットが返される順序で指定する必要があります。

      パラメーター:
      procedureName - データベース内のストアドプロシージャの名前
      resultSetMappings - ストアドプロシージャによって返される結果セットのマッピングで使用される結果セットマッピングの名前
      戻り値:
      新しいストアドプロシージャのクエリインスタンス
      例外:
      IllegalArgumentExceptionSE - 指定された名前のストアドプロシージャまたは結果セットマッピングが存在しない場合 (またはクエリの実行は失敗します)
    • joinTransaction

      void joinTransaction()
      エンティティマネージャーに JTA トランザクションがアクティブであることを示し、永続コンテキストをそれに参加させます。

      このメソッドは、アクティブなトランザクションのスコープ外で作成された JTA アプリケーション管理のエンティティマネージャー、または型 SynchronizationType.UNSYNCHRONIZED のエンティティマネージャーで呼び出して、現在の JTA トランザクションに関連付ける必要があります。

      例外:
      TransactionRequiredException - アクティブなトランザクションがない場合
    • isJoinedToTransaction

      boolean isJoinedToTransaction()
      エンティティマネージャーが現在のトランザクションに参加しているかどうかを判断します。エンティティマネージャーが現在のトランザクションに参加していない場合、またはアクティブなトランザクションがない場合は false を返します。
      戻り値:
      boolean
      導入:
      2.1
    • unwrap

      <T> T unwrap(ClassSE<T> cls)
      指定された型のオブジェクトを返して、プロバイダー固有の API へのアクセスを許可します。EntityManager のプロバイダ実装が指定された型をサポートしていない場合、PersistenceException がスローされます。
      パラメーター:
      cls - 返されるオブジェクトのクラス。これは通常、EntityManager を実装する基礎となるクラス、またはそれが実装するインターフェースのいずれかです。
      戻り値:
      指定されたクラスのインスタンス
      例外:
      PersistenceException - プロバイダーが指定された型をサポートしていない場合
      導入:
      2.0
    • getDelegate

      ObjectSE getDelegate()
      利用可能な場合は、EntityManager の基礎となるプロバイダーオブジェクトを返します。このメソッドの結果は実装によって異なります。

      unwrap メソッドは、新しいアプリケーションに適しています。

      戻り値:
      基礎となるプロバイダーオブジェクト
    • close

      void close()
      アプリケーション管理エンティティマネージャーを閉じます。

      close() の呼び出し後、EntityManager インスタンスのすべてのメソッド、およびそこから取得された QueryTypedQuery、または StoredProcedureQuery のインスタンスのすべてのメソッドは、getProperties()getTransaction()isOpen() ( false を返す) を除き、IllegalStateExceptionSE をスローします。

      エンティティマネージャーがアクティブなトランザクションに参加しているときにこのメソッドが呼び出された場合、永続コンテキストはトランザクションが完了するまで管理されたままになります。

      次で指定:
      インターフェース AutoCloseableSEclose 
      例外:
      IllegalStateExceptionSE - エンティティマネージャーがコンテナー管理の場合
    • isOpen

      boolean isOpen()
      エンティティマネージャーが開いているかどうかを確認します。
      戻り値:
      エンティティマネージャーが閉じられるまで true
    • getTransaction

      EntityTransaction getTransaction()
      リソースレベルの EntityTransaction オブジェクトを返します。EntityTransaction インスタンスは、複数のトランザクションを開始およびコミットするために連続的に使用できます。
      戻り値:
      EntityTransaction インスタンス
      例外:
      IllegalStateExceptionSE - JTA エンティティマネージャーで呼び出された場合
    • getEntityManagerFactory

      EntityManagerFactory getEntityManagerFactory()
      戻り値:
      EntityManagerFactory
      例外:
      IllegalStateExceptionSE - エンティティマネージャーが閉じている場合
      導入:
      2.0
    • getCriteriaBuilder

      CriteriaBuilder getCriteriaBuilder()
      CriteriaQuery オブジェクトの構築に使用できる CriteriaBuilder のインスタンスを取得します。
      戻り値:
      CriteriaBuilder のインスタンス
      例外:
      IllegalStateExceptionSE - エンティティマネージャーが閉じている場合
      導入:
      2.0
      関連事項:
    • getMetamodel

      Metamodel getMetamodel()
      永続化ユニットに属するマネージド型を記述するメタモデルオブジェクトへのアクセスを提供する Metamodel インターフェースのインスタンスを取得します。
      戻り値:
      Metamodel のインスタンス
      例外:
      IllegalStateExceptionSE - エンティティマネージャーが閉じている場合
      導入:
      2.0
    • createEntityGraph

      <T> EntityGraph<T> createEntityGraph(ClassSE<T> rootType)
      新しい可変 EntityGraph を作成し、エンティティグラフの動的な定義を可能にします。
      パラメーター:
      rootType - エンティティグラフのクラス
      戻り値:
      エンティティグラフ
      導入:
      2.1
    • createEntityGraph

      EntityGraph<?> createEntityGraph(StringSE graphName)
      名前付きの EntityGraph の変更可能なコピーを取得するか、指定された名前のエンティティグラフがない場合は null を返します。
      パラメーター:
      graphName - エンティティグラフの名前
      戻り値:
      エンティティグラフ
      導入:
      2.1
    • getEntityGraph

      EntityGraph<?> getEntityGraph(StringSE graphName)
      EntityGraph という名前のファイルを取得します。返された EntityGraph のインスタンスは不変であると見なされます。
      パラメーター:
      graphName - 既存のエンティティグラフの名前
      戻り値:
      名前付きエンティティグラフ
      例外:
      IllegalArgumentExceptionSE - 指定された名前のグラフの実体がない場合
      導入:
      2.1
    • getEntityGraphs

      <T> ListSE<EntityGraph<? super T>> getEntityGraphs(ClassSE<T> entityClass)
      指定されたエンティティクラス型に対して定義されている名前付き EntityGraph をすべて返します。
      パラメーター:
      entityClass - エンティティクラス
      戻り値:
      エンティティに定義されたすべてのエンティティグラフのリスト
      例外:
      IllegalArgumentExceptionSE - クラスがエンティティでない場合
      導入:
      2.1
    • runWithConnection

      <C> void runWithConnection(ConnectionConsumer<C> action)
      この EntityManager の基盤となるデータベース接続を使用して、指定されたアクションを実行します。通常、接続は JDBC 接続ですが、プロバイダは他のネイティブ接続型をサポートしている可能性があり、java.sql.Connection をサポートする必要はありません。この EntityManager がトランザクションに関連付けられている場合、アクションはトランザクションのコンテキストで実行されます。指定されたアクションは、作成したリソースをすべて閉じる必要がありますが、接続自体は閉じず、トランザクションをコミットまたはロールバックしてはなりません。指定されたアクションが例外をスローした場合、永続性プロバイダはトランザクションをロールバック対象としてマークする必要があります。
      型パラメーター:
      C - 接続型、通常は java.sql.Connection
      パラメーター:
      action - アクション
      例外:
      PersistenceException - ConnectionConsumer.accept(C) によってスローされたチェック済み ExceptionSE をラップします (存在する場合)
      導入:
      3.2
    • callWithConnection

      <C, T> T callWithConnection(ConnectionFunction<C,T> function)
      指定された関数を呼び出して、この EntityManager の基になるデータベース接続を使用してその結果を返します。通常、接続は JDBC 接続ですが、プロバイダは他のネイティブ接続型をサポートしている可能性があり、java.sql.Connection をサポートする必要はありません。この EntityManager がトランザクションに関連付けられている場合、関数はトランザクションのコンテキストで実行されます。指定された関数は、作成するすべてのリソースを閉じる必要がありますが、接続自体は閉じず、トランザクションをコミットまたはロールバックしてはなりません。指定されたアクションが例外をスローした場合、永続性プロバイダはトランザクションをロールバック対象としてマークする必要があります。
      型パラメーター:
      C - 接続型、通常は java.sql.Connection
      T - 関数によって返される結果の型
      パラメーター:
      function - 関数
      戻り値:
      ConnectionFunction.apply(C) によって返される値。
      例外:
      PersistenceException - ConnectionFunction.apply(C) によってスローされたチェック済み ExceptionSE をラップします (存在する場合)
      導入:
      3.2