インターフェース EntityManager
- すべてのスーパーインターフェース:
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 つ以上の組み込みオプションおよびベンダー固有のオプションを受け入れます。
方法の概要
修飾子と型メソッド説明<C,T> T callWithConnection(ConnectionFunction<C, T> function) 指定された関数を呼び出し、このEntityManagerの基礎となるデータベース接続を使用してその結果を返します。voidclear()永続コンテキストをクリアして、すべての管理対象エンティティを切り離します。voidclose()アプリケーション管理エンティティマネージャーを閉じます。boolean指定されたオブジェクトが現在の永続コンテキストに属する管理対象エンティティインスタンスであるかどうかを判断します。<T> EntityGraph<T>createEntityGraph(ClassSE<T> rootType) 新しい可変EntityGraphを作成し、エンティティグラフの動的な定義を可能にします。EntityGraph<?>createEntityGraph(StringSE graphName) 名前付きのEntityGraphの変更可能なコピーを取得するか、指定された名前のエンティティグラフがない場合は null を返します。createNamedQuery(StringSE name) Jakarta Persistence クエリ言語またはネイティブ SQL で記述された名前付きクエリを実行するためのQueryのインスタンスを作成します。<T> TypedQuery<T>createNamedQuery(StringSE name, ClassSE<T> resultClass) query という名前の Jakarta Persistence クエリ言語を実行するためのTypedQueryのインスタンスを作成します。データベース内のストアドプロシージャを実行するためのStoredProcedureQueryのインスタンスを作成します。createNativeQuery(StringSE sqlString) 更新や削除など、ネイティブ SQL ステートメントを実行するためのQueryのインスタンスを作成します。<T> QuerycreateNativeQuery(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>createQuery(TypedQueryReference<T> reference) Jakarta Persistence クエリ言語またはネイティブ SQL で記述された名前付きクエリを実行するためのTypedQueryのインスタンスを作成します。createQuery(StringSE qlString) Jakarta Persistence クエリ言語ステートメントを実行するためのQueryのインスタンスを作成します。<T> TypedQuery<T>createQuery(StringSE qlString, ClassSE<T> resultClass) Jakarta Persistence クエリ言語ステートメントを実行するためのTypedQueryのインスタンスを作成します。createStoredProcedureQuery(StringSE procedureName) データベース内のストアドプロシージャを実行するためのStoredProcedureQueryのインスタンスを作成します。createStoredProcedureQuery(StringSE procedureName, ClassSE<?>... resultClasses) データベース内のストアドプロシージャを実行するためのStoredProcedureQueryのインスタンスを作成します。createStoredProcedureQuery(StringSE procedureName, StringSE... resultSetMappings) データベース内のストアドプロシージャを実行するためのStoredProcedureQueryのインスタンスを作成します。void指定された管理対象エンティティまたは削除されたエンティティを永続コンテキストから削除し、エンティティを即座に切り離します。<T> Tfind(EntityGraph<T> entityGraph, ObjectSE primaryKey, FindOption... options) <T> T主キーで検索します。<T> Tfind(ClassSE<T> entityClass, ObjectSE primaryKey, FindOption... options) 指定された options を使用して、主キーによって指定されたエンティティクラスのインスタンスを検索します。<T> Tfind(ClassSE<T> entityClass, ObjectSE primaryKey, LockModeType lockMode) 主キーで検索し、結果のエンティティに対して指定されたロック型を取得します。<T> Tfind(ClassSE<T> entityClass, ObjectSE primaryKey, LockModeType lockMode, MapSE<StringSE, ObjectSE> properties) 主キーで検索し、指定されたプロパティを使用してエンティティをロックします。<T> T指定されたプロパティを使用して、主キーで検索します。voidflush()永続化コンテキストに保持されている変更を基礎となるデータベースに同期します。この永続コンテキストのキャッシュ取得モード。この永続コンテキストのキャッシュストレージモード。CriteriaQueryオブジェクトの構築に使用できるCriteriaBuilderのインスタンスを取得します。利用可能な場合は、EntityManagerの基になるプロバイダーオブジェクトを返します。EntityGraph<?>getEntityGraph(StringSE graphName) EntityGraphという名前のファイルを取得します。<T> ListSE<EntityGraph<? super T>>getEntityGraphs(ClassSE<T> entityClass) 指定されたエンティティクラス型に対して定義されている名前付きEntityGraphをすべて返します。永続化コンテキストに含まれるすべてのオブジェクトに適用されるフラッシュモードを取得します。getLockMode(ObjectSE entity) 指定された管理対象エンティティインスタンス上のこの永続コンテキストによって保持されている現在のロックモードを取得します。永続化ユニットに属するマネージド型を記述するメタモデルオブジェクトへのアクセスを提供するMetamodelインターフェースのインスタンスを取得します。このエンティティマネージャーに有効なプロパティとヒント、およびそれらに関連する値。<T> TgetReference(ClassSE<T> entityClass, ObjectSE primaryKey) 指定された主キーを持つ指定されたエンティティクラスのインスタンスへの参照を取得します。その状態は遅延フェッチできます。<T> TgetReference(T entity) 指定されたオブジェクトと同じ主キーを持つ、指定されたオブジェクトのエンティティクラスのインスタンスへの参照を取得します。その状態は遅延フェッチできます。リソースレベルのEntityTransactionオブジェクトを返します。booleanエンティティマネージャーが現在のトランザクションに参加しているかどうかを判断します。booleanisOpen()エンティティマネージャーが開いているかどうかを確認します。voidエンティティマネージャーに JTA トランザクションがアクティブであることを示し、永続コンテキストをそれに参加させます。voidlock(ObjectSE entity, LockModeType lockMode) 永続コンテキストに属するエンティティインスタンスをロックし、指定されたロックモードを取得します。voidlock(ObjectSE entity, LockModeType lockMode, LockOption... options) void指定されたプロパティを使用して、指定されたロックモードを取得し、永続コンテキストに属するエンティティインスタンスをロックします。<T> Tmerge(T entity) 指定された新しいエンティティインスタンスまたはデタッチされたエンティティインスタンスの状態を現在の永続コンテキストにマージします。その結果、永続コンテキストがデータベースと同期されているときに、それぞれ挿入または更新が行われる可能性があります。void新しいエンティティインスタンスを管理対象および永続化して、永続化コンテキストがデータベースと同期されるときにデータベースに挿入されるか、削除されたエンティティを管理対象にして、以前のremove(Object)呼び出しの効果を取り消します。voidデータベースから指定された管理対象エンティティインスタンスの状態をリフレッシュし、エンティティに対して行われたフラッシュされていない変更があれば上書きします。voidrefresh(ObjectSE entity, LockModeType lockMode) データベースから指定された管理対象エンティティインスタンスの状態をリフレッシュし、エンティティに対して行われたフラッシュされていない変更があれば上書きし、指定されたロックモードを取得します。void指定されたマネージドエンティティインスタンスの状態をデータベースからリフレッシュし、エンティティに対して行われたフラッシュされていない変更があれば上書きし、指定されたプロパティを使用して、指定されたロックモードを取得します。voidrefresh(ObjectSE entity, RefreshOption... options) 指定された options を使用して、データベースから指定された管理対象エンティティインスタンスの状態をリフレッシュし、エンティティに加えられた変更があれば上書きします。void指定されたプロパティを使用して、データベースから指定されたマネージドエンティティインスタンスの状態をリフレッシュし、エンティティに対して行われたフラッシュされていない変更があれば上書きします。void管理対象エンティティインスタンスを削除済みとしてマークすると、永続化コンテキストがデータベースと同期されるときにデータベースから削除されます。<C> voidrunWithConnection(ConnectionConsumer<C> action) このEntityManagerの基礎となるデータベース接続を使用して、指定されたアクションを実行します。voidsetCacheRetrieveMode(CacheRetrieveMode cacheRetrieveMode) この永続コンテキストのデフォルトのキャッシュ取得モードを設定します。voidsetCacheStoreMode(CacheStoreMode cacheStoreMode) この永続コンテキストのデフォルトのキャッシュストレージモードを設定します。voidsetFlushMode(FlushModeType flushMode) 永続コンテキストに含まれるすべてのオブジェクトに適用されるフラッシュモードを設定します。voidsetProperty(StringSE propertyName, ObjectSE value) エンティティマネージャーのプロパティまたはヒントを設定します。<T> T指定された型のオブジェクトを返して、プロバイダー固有の API へのアクセスを許可します。
方法の詳細
persist
新しいエンティティインスタンスを管理対象および永続化して、永続化コンテキストがデータベースと同期されるときにデータベースに挿入されるか、削除されたエンティティを管理対象にして、以前の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
管理対象エンティティインスタンスを削除済みとしてマークすると、永続化コンテキストがデータベースと同期されるときにデータベースから削除されます。この操作は、cascade=REMOVEとマークされた関連付けによって関連するすべてのエンティティにカスケードされます。指定されたエンティティインスタンスがすでに削除されている場合、無視されます。指定されたエンティティが新しい場合、それ自体は無視されますが、操作は引き続きカスケードされます。- パラメーター:
entity- 管理対象、新規、削除されたエンティティインスタンス- 例外:
IllegalArgumentExceptionSE- インスタンスがエンティティではない場合、または分離されたエンティティである場合TransactionRequiredException-PersistenceContextType.TRANSACTION型のコンテナー管理エンティティマネージャーで呼び出され、トランザクションがない場合
find
主キーで検索します。指定されたクラスと主キーのエンティティを検索します。エンティティインスタンスが永続コンテキストに含まれている場合、そこから返されます。- パラメーター:
entityClass- エンティティクラスprimaryKey- 主キー- 戻り値:
- 見つかったエンティティインスタンス、またはエンティティが存在しない場合は null
- 例外:
IllegalArgumentExceptionSE- 最初の引数がエンティティ型を示していない場合、または 2 番目の引数がそのエンティティの主キーに対して有効な型ではない場合、または null の場合
find
指定されたプロパティを使用して、主キーで検索します。指定したクラスのエンティティと主キーを検索します。エンティティインスタンスが永続コンテキストに含まれている場合は、そこから返されます。ベンダー固有のプロパティまたはヒントが認識されない場合、警告なしで無視されます。- パラメーター:
entityClass- エンティティクラスprimaryKey- 主キーproperties- 標準およびベンダー固有のプロパティとヒント- 戻り値:
- 見つかったエンティティインスタンス、またはエンティティが存在しない場合は null
- 例外:
IllegalArgumentExceptionSE- 最初の引数がエンティティ型を示していない場合、または 2 番目の引数がそのエンティティの主キーに対して有効な型ではない場合、または null の場合- 導入:
- 2.0
find
主キーで検索し、結果のエンティティに対して指定されたロック型を取得します。指定されたクラスと主キーのエンティティを検索し、指定されたロック型に従ってロックします。エンティティインスタンスが永続コンテキストに含まれている場合は、そこから返され、このメソッドの効果は、エンティティに対して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
指定されたオプションを使用して、主キーによって指定されたエンティティクラスのインスタンスを検索します。指定されたクラスと主キーを持つエンティティを検索します。指定されたオプションにLockModeTypeが含まれている場合は、指定されたロック型に関してそれをロックします。エンティティインスタンスが永続コンテキストに含まれている場合は、そこから返されます。エンティティが永続コンテキスト内で見つかり、ロックモード型がペシミスティックで、エンティティにバージョン属性がある場合、永続プロバイダはデータベースロックを取得するときにオプティミスティックバージョンチェックを実行する必要があります。これらのチェックが失敗すると、
OptimisticLockExceptionがスローされます。ロックモード型が悲観的で、エンティティインスタンスが見つかったがロックできない場合:
PessimisticLockExceptionは、データベースのロックの失敗によりトランザクションレベルのロールバックが発生した場合にスローされます。LockTimeoutExceptionは、データベースロックの失敗によりステートメントレベルのロールバックのみが発生した場合にスローされます。
ベンダー固有のオプションが認識されない場合、確認なしで無視されます。
ポータブルアプリケーションは、標準のタイムアウトオプションに依存しないでください。使用中のデータベースとプロバイダーが使用するロックメカニズムに応じて、このオプションが遵守される場合と遵守されない場合があります。
- パラメーター:
entityClass- エンティティクラスprimaryKey- 主キーoptions- 標準およびベンダー固有のオプション- 戻り値:
- 見つかったエンティティインスタンス、またはエンティティが存在しない場合は null
- 例外:
IllegalArgumentExceptionSE- 矛盾するオプションがある場合、最初の引数が永続化ユニットに属するエンティティ型を示していない場合、または 2 番目の引数がエンティティの主キー型の有効な非 null インスタンスではない場合TransactionRequiredException- トランザクションがなく、NONE以外のロックモードが指定されている場合、または現在のトランザクションに参加していないエンティティマネージャーで呼び出され、NONE以外のロックモードが指定されている場合OptimisticLockException- 楽観的なバージョンチェックが失敗した場合PessimisticLockException- 悲観的ロックが失敗し、トランザクションがロールバックされた場合LockTimeoutException- 悲観的ロックが失敗し、ステートメントのみがロールバックされる場合PersistenceException- サポートされていないロック呼び出しが行われた場合- 導入:
- 3.2
find
指定されたオプションを使用し、EntityGraphをロードグラフとして解釈して、主キーによって指定されたEntityGraphのルートエンティティのインスタンスを検索します。指定された型と主キーを持つエンティティを検索します。指定されたオプションにLockModeTypeが含まれている場合は、指定されたロック型に関してそれをロックします。エンティティインスタンスが永続コンテキストに含まれている場合は、そこから返されます。エンティティが永続コンテキスト内で見つかり、ロックモード型がペシミスティックで、エンティティにバージョン属性がある場合、永続プロバイダはデータベースロックを取得するときにオプティミスティックバージョンチェックを実行する必要があります。これらのチェックが失敗すると、
OptimisticLockExceptionがスローされます。ロックモード型が悲観的で、エンティティインスタンスが見つかったがロックできない場合:
PessimisticLockExceptionは、データベースのロックの失敗によりトランザクションレベルのロールバックが発生した場合にスローされます。LockTimeoutExceptionは、データベースロックの失敗によりステートメントレベルのロールバックのみが発生した場合にスローされます。
ベンダー固有のオプションが認識されない場合、確認なしで無視されます。
ポータブルアプリケーションは、標準のタイムアウトオプションに依存しないでください。使用中のデータベースとプロバイダーが使用するロックメカニズムに応じて、このオプションが遵守される場合と遵守されない場合があります。
- パラメーター:
entityGraph- 負荷グラフとして解釈されるエンティティグラフprimaryKey- 主キーoptions- 標準およびベンダー固有のオプション- 戻り値:
- 見つかったエンティティインスタンス、またはエンティティが存在しない場合は null
- 例外:
IllegalArgumentExceptionSE- 矛盾するオプションがある場合、最初の引数が永続化ユニットに属するエンティティ型を示していない場合、または 2 番目の引数がエンティティの主キー型の有効な非 null インスタンスではない場合TransactionRequiredException- トランザクションがなく、NONE以外のロックモードが指定されている場合、または現在のトランザクションに参加していないエンティティマネージャーで呼び出され、NONE以外のロックモードが指定されている場合OptimisticLockException- 楽観的なバージョンチェックが失敗した場合PessimisticLockException- 悲観的ロックが失敗し、トランザクションがロールバックされた場合LockTimeoutException- 悲観的ロックが失敗し、ステートメントのみがロールバックされる場合PersistenceException- サポートされていないロック呼び出しが行われた場合- 導入:
- 3.2
getReference
指定された主キーを持つ指定されたエンティティクラスのインスタンスへの参照を取得します。その状態は遅延フェッチできます。リクエストされたインスタンスがデータベースに存在しない場合、インスタンスの状態に最初にアクセスしたときに
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
永続コンテキストに含まれるすべてのオブジェクトに適用されるフラッシュモードを設定します。- パラメーター:
flushMode- フラッシュモード
getFlushMode
FlushModeType getFlushMode()永続化コンテキストに含まれるすべてのオブジェクトに適用されるフラッシュモードを取得します。- 戻り値:
- 現在の
FlushModeType
lock
永続コンテキストに属するエンティティインスタンスをロックし、指定されたロックモードを取得します。ペシミスティックロックモード型が指定され、エンティティにバージョン属性が含まれている場合、永続プロバイダーはデータベースロックを取得するときにオプティミスティックバージョンチェックも実行する必要があります。これらのチェックが失敗すると、
OptimisticLockExceptionがスローされます。ロックモード型が悲観的で、エンティティインスタンスが見つかったがロックできない場合:
PessimisticLockExceptionは、データベースのロックの失敗によりトランザクションレベルのロールバックが発生した場合にスローされます。LockTimeoutExceptionは、データベースロックの失敗によりステートメントレベルのロールバックのみが発生した場合にスローされます。
- パラメーター:
entity- 管理対象エンティティのインスタンスlockMode- ロックモード- 例外:
IllegalArgumentExceptionSE- インスタンスがエンティティではない場合、または分離されたエンティティである場合TransactionRequiredException- トランザクションがない場合、または現在のトランザクションに参加していないエンティティマネージャーで呼び出された場合EntityNotFoundException- 悲観的ロックが実行されたときにエンティティがデータベースに存在しない場合OptimisticLockException- 楽観的なバージョンチェックが失敗した場合PessimisticLockException- 悲観的ロックが失敗し、トランザクションがロールバックされた場合LockTimeoutException- 悲観的ロックが失敗し、ステートメントのみがロールバックされる場合PersistenceException- サポートされていないロック呼び出しが行われた場合
lock
指定されたプロパティを使用して、指定されたロックモードを取得し、永続コンテキストに属するエンティティインスタンスをロックします。ペシミスティックロックモード型が指定され、エンティティにバージョン属性が含まれている場合、永続プロバイダーはデータベースロックを取得するときにオプティミスティックバージョンチェックも実行する必要があります。これらのチェックが失敗すると、
OptimisticLockExceptionがスローされます。ロックモード型が悲観的で、エンティティインスタンスが見つかったがロックできない場合:
PessimisticLockExceptionは、データベースのロックの失敗によりトランザクションレベルのロールバックが発生した場合にスローされます。LockTimeoutExceptionは、データベースのロックの失敗によりステートメントレベルのロールバックのみが発生した場合にスローされます。
ベンダー固有のプロパティまたはヒントが認識されない場合、警告なしで無視されます。
ポータブルアプリケーションは、標準のタイムアウトヒントに依存するべきではありません。使用中のデータベースとプロバイダーが使用するロックメカニズムに応じて、ヒントが表示される場合と表示されない場合があります。
- パラメーター:
entity- 管理対象エンティティのインスタンスlockMode- ロックモードproperties- 標準およびベンダー固有のプロパティとヒント- 例外:
IllegalArgumentExceptionSE- インスタンスがエンティティではない場合、または分離されたエンティティである場合TransactionRequiredException- トランザクションがない場合、または現在のトランザクションに参加していないエンティティマネージャーで呼び出された場合EntityNotFoundException- 悲観的ロックが実行されたときにエンティティがデータベースに存在しない場合OptimisticLockException- 楽観的なバージョンチェックが失敗した場合PessimisticLockException- 悲観的ロックが失敗し、トランザクションがロールバックされた場合LockTimeoutException- 悲観的ロックが失敗し、ステートメントのみがロールバックされる場合PersistenceException- サポートされていないロック呼び出しが行われた場合- 導入:
- 2.0
lock
指定された options を使用して、指定されたロックモードを取得し、永続コンテキストに属するエンティティインスタンスをロックします。ペシミスティックロックモード型が指定され、エンティティにバージョン属性が含まれている場合、永続プロバイダーはデータベースロックを取得するときにオプティミスティックバージョンチェックも実行する必要があります。これらのチェックが失敗すると、
OptimisticLockExceptionがスローされます。ロックモード型が悲観的で、エンティティインスタンスが見つかったがロックできない場合:
PessimisticLockExceptionは、データベースのロックの失敗によりトランザクションレベルのロールバックが発生した場合にスローされます。LockTimeoutExceptionは、データベースロックの失敗によりステートメントレベルのロールバックのみが発生した場合にスローされます。
ベンダー固有の
LockOptionが認識されない場合は、通知なく無視されます。ポータブルアプリケーションは、標準のタイムアウトオプションに依存しないでください。使用中のデータベースとプロバイダーが使用するロックメカニズムに応じて、このオプションが遵守される場合と遵守されない場合があります。
- パラメーター:
entity- 管理対象エンティティのインスタンスlockMode- ロックモードoptions- 標準およびベンダー固有のオプション- 例外:
IllegalArgumentExceptionSE- インスタンスがエンティティではない場合、または分離されたエンティティである場合TransactionRequiredException- トランザクションがない場合、または現在のトランザクションに参加していないエンティティマネージャーで呼び出された場合EntityNotFoundException- 悲観的ロックが実行されたときにエンティティがデータベースに存在しない場合OptimisticLockException- 楽観的なバージョンチェックが失敗した場合PessimisticLockException- 悲観的ロックが失敗し、トランザクションがロールバックされた場合LockTimeoutException- 悲観的ロックが失敗し、ステートメントのみがロールバックされる場合PersistenceException- サポートされていないロック呼び出しが行われた場合- 導入:
- 3.2
refresh
データベースから指定された管理対象エンティティインスタンスの状態をリフレッシュし、エンティティに対して行われたフラッシュされていない変更があれば上書きします。この操作は、cascade=REFRESHとマークされた関連付けによって関連するすべてのエンティティにカスケードされます。- パラメーター:
entity- 管理対象エンティティのインスタンス- 例外:
IllegalArgumentExceptionSE- インスタンスがエンティティではない場合、またはエンティティが管理されていない場合TransactionRequiredException-PersistenceContextType.TRANSACTION型のコンテナー管理エンティティマネージャーで呼び出されたときにトランザクションがない場合EntityNotFoundException- エンティティがデータベースに存在しない場合
refresh
指定されたプロパティを使用して、データベースから指定されたマネージドエンティティインスタンスの状態をリフレッシュし、エンティティに対して行われたフラッシュされていない変更があれば上書きします。この操作は、cascade=REFRESHとマークされた関連付けによって関連するすべてのエンティティにカスケードされます。ベンダー固有のプロパティまたはヒントが認識されない場合、警告なしで無視されます。
- パラメーター:
entity- 管理対象エンティティのインスタンスproperties- 標準およびベンダー固有のプロパティとヒント- 例外:
IllegalArgumentExceptionSE- インスタンスがエンティティではない場合、またはエンティティが管理されていない場合TransactionRequiredException-PersistenceContextType.TRANSACTION型のコンテナー管理エンティティマネージャーで呼び出されたときにトランザクションがない場合EntityNotFoundException- エンティティがデータベースに存在しない場合- 導入:
- 2.0
refresh
指定された管理対象エンティティインスタンスの状態をデータベースからリフレッシュし、エンティティに対して行われたフラッシュされていない変更があればそれを上書きして、指定されたロックモードを取得します。この操作は、cascade=REFRESHとマークされた関連付けによって関連付けられているすべてのエンティティにカスケードされます。ロックモード型が悲観的で、エンティティインスタンスが見つかったがロックできない場合:
PessimisticLockExceptionは、データベースのロックの失敗によりトランザクションレベルのロールバックが発生した場合にスローされます。LockTimeoutExceptionは、データベースロックの失敗によりステートメントレベルのロールバックのみが発生した場合にスローされます。
- パラメーター:
entity- 管理対象エンティティのインスタンスlockMode- ロックモード- 例外:
IllegalArgumentExceptionSE- インスタンスがエンティティではない場合、またはエンティティが管理されていない場合TransactionRequiredException- トランザクションがないときに型PersistenceContextType.TRANSACTIONのコンテナー管理エンティティマネージャーで呼び出された場合。トランザクションがなく、LockModeType.NONE以外のロックモードが指定されたときに拡張エンティティマネージャーで呼び出された場合。または、現在のトランザクションに参加していない拡張エンティティマネージャーで呼び出され、NONE以外のロックモードが指定された場合EntityNotFoundException- エンティティがデータベースに存在しない場合PessimisticLockException- 悲観的ロックが失敗し、トランザクションがロールバックされた場合LockTimeoutException- 悲観的ロックが失敗し、ステートメントのみがロールバックされる場合PersistenceException- サポートされていないロック呼び出しが行われた場合- 導入:
- 2.0
refresh
指定された管理対象エンティティインスタンスの状態をデータベースからリフレッシュし、エンティティに対して行われたフラッシュされていない変更があればそれを上書きし、指定されたプロパティを使用して、指定されたロックモードを取得します。この操作は、cascade=REFRESHとマークされた関連付けによって関連付けられているすべてのエンティティにカスケードされます。ロックモード型が悲観的で、エンティティインスタンスが見つかったがロックできない場合:
PessimisticLockExceptionは、データベースのロックの失敗によりトランザクションレベルのロールバックが発生した場合にスローされます。LockTimeoutExceptionは、データベースロックの失敗によりステートメントレベルのロールバックのみが発生した場合にスローされます。
ベンダー固有のプロパティまたはヒントが認識されない場合、警告なしで無視されます。
ポータブルアプリケーションは、標準のタイムアウトヒントに依存するべきではありません。使用中のデータベースとプロバイダーが使用するロックメカニズムに応じて、ヒントが表示される場合と表示されない場合があります。
- パラメーター:
entity- 管理対象エンティティのインスタンスlockMode- ロックモードproperties- 標準およびベンダー固有のプロパティとヒント- 例外:
IllegalArgumentExceptionSE- インスタンスがエンティティではない場合、またはエンティティが管理されていない場合TransactionRequiredException- トランザクションがないときに型PersistenceContextType.TRANSACTIONのコンテナー管理エンティティマネージャーで呼び出された場合。トランザクションがなく、LockModeType.NONE以外のロックモードが指定されたときに拡張エンティティマネージャーで呼び出された場合。または、現在のトランザクションに参加していない拡張エンティティマネージャーで呼び出され、NONE以外のロックモードが指定された場合EntityNotFoundException- エンティティがデータベースに存在しない場合PessimisticLockException- 悲観的ロックが失敗し、トランザクションがロールバックされた場合LockTimeoutException- 悲観的ロックが失敗し、ステートメントのみがロールバックされる場合PersistenceException- サポートされていないロック呼び出しが行われた場合- 導入:
- 2.0
refresh
指定された 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
指定された管理対象エンティティまたは削除されたエンティティを永続コンテキストから削除し、エンティティを即座に切り離します。エンティティに対して行われたフラッシュされていない変更 (エンティティの削除を含む) は、データベースに同期されません。指定されたエンティティを参照する管理対象エンティティは、引き続きそのエンティティを参照します。この操作は、cascade=DETACHとマークされた関連付けによって関連するすべてのエンティティにカスケードされます。指定されたエンティティインスタンスが新しい場合、または切り離されている場合、つまり、この永続コンテキストに関連付けられていない場合、そのインスタンスは無視されます。- パラメーター:
entity- 管理対象または削除されたエンティティインスタンス- 例外:
IllegalArgumentExceptionSE- インスタンスがエンティティではない場合- 導入:
- 2.0
contains
指定されたオブジェクトが現在の永続コンテキストに属する管理対象エンティティインスタンスであるかどうかを判断します。- パラメーター:
entity- エンティティインスタンス- 戻り値:
- エンティティが永続コンテキストに属しているかどうかを示すブール値
- 例外:
IllegalArgumentExceptionSE- エンティティでない場合
getLockMode
指定された管理対象エンティティインスタンス上のこの永続コンテキストによって保持されている現在のロックモードを取得します。- パラメーター:
entity- 管理対象エンティティのインスタンス- 戻り値:
- 現在保持されているロックモード
- 例外:
TransactionRequiredException- アクティブなトランザクションがない場合、またはエンティティマネージャーが現在のトランザクションに参加していない場合IllegalArgumentExceptionSE- トランザクションがアクティブであるが、指定されたインスタンスが管理対象エンティティではない場合- 導入:
- 2.0
setCacheRetrieveMode
この永続コンテキストのデフォルトのキャッシュ取得モードを設定します。- パラメーター:
cacheRetrieveMode- キャッシュ取得モード- 導入:
- 3.2
setCacheStoreMode
この永続コンテキストのデフォルトのキャッシュストレージモードを設定します。- パラメーター:
cacheStoreMode- キャッシュストレージモード- 導入:
- 3.2
getCacheRetrieveMode
CacheRetrieveMode getCacheRetrieveMode()この永続コンテキストのキャッシュ取得モード。- 導入:
- 3.2
getCacheStoreMode
CacheStoreMode getCacheStoreMode()この永続コンテキストのキャッシュストレージモード。- 導入:
- 3.2
setProperty
エンティティマネージャーのプロパティまたはヒントを設定します。ベンダー固有のプロパティまたはヒントが認識されない場合、警告なしで無視されます。- パラメーター:
propertyName- プロパティまたはヒントの名前value- プロパティまたはヒントの値- 例外:
IllegalArgumentExceptionSE- プロパティまたはヒント名が実装によって認識されるが、2 番目の引数が有効な値ではない場合- 導入:
- 2.0
getProperties
このエンティティマネージャーに有効なプロパティとヒント、およびそれらに関連する値。返されたマップの内容を変更しても、有効な構成は変更されません。- 戻り値:
- 現在有効なプロパティとヒントのマップ
- 導入:
- 2.0
createQuery
Jakarta Persistence クエリ言語ステートメントを実行するためのQueryのインスタンスを作成します。- パラメーター:
qlString- Jakarta Persistence クエリ文字列- 戻り値:
- 新しいクエリインスタンス
- 例外:
IllegalArgumentExceptionSE- クエリ文字列が無効であることが判明した場合
createQuery
条件クエリを実行するためのTypedQueryのインスタンスを作成します。- パラメーター:
criteriaQuery- 条件クエリオブジェクト- 戻り値:
- 新しいクエリインスタンス
- 例外:
IllegalArgumentExceptionSE- 条件クエリが無効であることが判明した場合- 導入:
- 2.0
createQuery
条件クエリを実行するためのTypedQueryのインスタンスを作成します。条件クエリは、トップレベルクエリの結合または交差である場合があります。- パラメーター:
selectQuery- 条件クエリオブジェクト- 戻り値:
- 新しいクエリインスタンス
- 例外:
IllegalArgumentExceptionSE- 条件クエリが無効であることが判明した場合- 導入:
- 3.2
createQuery
条件更新クエリを実行するためのQueryのインスタンスを作成します。- パラメーター:
updateQuery- 条件更新クエリオブジェクト- 戻り値:
- 新しいクエリインスタンス
- 例外:
IllegalArgumentExceptionSE- 更新クエリが無効であることが判明した場合- 導入:
- 2.1
createQuery
条件削除クエリを実行するためのQueryのインスタンスを作成します。- パラメーター:
deleteQuery- 条件削除クエリオブジェクト- 戻り値:
- 新しいクエリインスタンス
- 例外:
IllegalArgumentExceptionSE- 削除クエリが無効であることが判明した場合- 導入:
- 2.1
createQuery
Jakarta Persistence クエリ言語ステートメントを実行するためのTypedQueryのインスタンスを作成します。クエリの選択リストには 1 つの項目のみが含まれている必要があり、その項目はresultClass引数で指定された型に割り当て可能である必要があります。- パラメーター:
qlString- Jakarta Persistence クエリ文字列resultClass- クエリ結果の型- 戻り値:
- 新しいクエリインスタンス
- 例外:
IllegalArgumentExceptionSE- クエリ文字列が無効であることが判明した場合、またはクエリ結果が指定された型に割り当て可能でないことが判明した場合- 導入:
- 2.0
createNamedQuery
Jakarta Persistence クエリ言語またはネイティブ SQL で記述された名前付きクエリを実行するためのQueryのインスタンスを作成します。- パラメーター:
name- メタデータで定義されたクエリの名前- 戻り値:
- 新しいクエリインスタンス
- 例外:
IllegalArgumentExceptionSE- クエリが指定された名前で定義されていない場合、またはクエリ文字列が無効であることが判明した場合- 関連事項:
createNamedQuery
Jakarta Persistence クエリ言語の名前付きクエリを実行するためのTypedQueryのインスタンスを作成します。クエリの選択リストには、resultClass引数で指定された型に割り当て可能な単一の項目のみを含める必要があります。- パラメーター:
name- メタデータで定義されたクエリの名前resultClass- クエリ結果の型- 戻り値:
- 新しいクエリインスタンス
- 例外:
IllegalArgumentExceptionSE- クエリが指定された名前で定義されていない場合、クエリ文字列が無効であることが判明した場合、クエリ結果が指定された型に割り当て可能でないことが判明した場合- 導入:
- 2.0
createQuery
Jakarta Persistence クエリ言語またはネイティブ SQL で記述された名前付きクエリを実行するためのTypedQueryのインスタンスを作成します。- パラメーター:
reference- メタデータで定義されたクエリへの参照- 戻り値:
- 新しいクエリインスタンス
- 例外:
IllegalArgumentExceptionSE- クエリが定義されていない場合、クエリ文字列が無効であることが判明した場合、クエリ結果が指定された型に割り当てられないことが判明した場合- 関連事項:
createNativeQuery
更新や削除など、ネイティブ SQL ステートメントを実行するためのQueryのインスタンスを作成します。クエリが更新クエリまたは削除クエリではない場合、クエリを実行すると、SQL 結果の各行が
Object[]型の結果として返されます (選択リストに列が 1 つしかない場合は、Object型の結果が返されます)。値は選択リスト内の出現順に返され、デフォルトの JDBC 型マッピングが適用されます。- パラメーター:
sqlString- ネイティブ SQL クエリ文字列- 戻り値:
- 新しいクエリインスタンス
createNativeQuery
ネイティブ SQL クエリを実行するためのQueryのインスタンスを作成します。この API の次のリリースでは、このメソッドの戻り値の型は
TypedQuery<T>に変更されます。- パラメーター:
sqlString- ネイティブ SQL クエリ文字列resultClass- クエリ結果の型- 戻り値:
- 新しいクエリインスタンス
createNativeQuery
ネイティブ SQL クエリを実行するためのQueryのインスタンスを作成します。- パラメーター:
sqlString- ネイティブ SQL クエリ文字列resultSetMapping- 結果セットマッピングの名前- 戻り値:
- 新しいクエリインスタンス
createNamedStoredProcedureQuery
データベース内のストアドプロシージャを実行するためのStoredProcedureQueryのインスタンスを作成します。ストアドプロシージャを実行する前に、パラメーターを登録する必要があります。
ストアドプロシージャが 1 つ以上の結果セットを返す場合、すべての結果セットは
Object[]型のリストとして返されます。- パラメーター:
name- メタデータでストアドプロシージャクエリに割り当てられた名前- 戻り値:
- 新しいストアドプロシージャのクエリインスタンス
- 例外:
IllegalArgumentExceptionSE- 指定された名前でクエリが定義されていない場合- 導入:
- 2.1
createStoredProcedureQuery
データベース内のストアドプロシージャを実行するための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
指定された型のオブジェクトを返して、プロバイダー固有の API へのアクセスを許可します。EntityManagerのプロバイダ実装が指定された型をサポートしていない場合、PersistenceExceptionがスローされます。- パラメーター:
cls- 返されるオブジェクトのクラス。これは通常、EntityManagerを実装する基礎となるクラス、またはそれが実装するインターフェースのいずれかです。- 戻り値:
- 指定されたクラスのインスタンス
- 例外:
PersistenceException- プロバイダーが指定された型をサポートしていない場合- 導入:
- 2.0
getDelegate
ObjectSE getDelegate()利用可能な場合は、EntityManagerの基礎となるプロバイダーオブジェクトを返します。このメソッドの結果は実装によって異なります。unwrapメソッドは、新しいアプリケーションに適しています。- 戻り値:
- 基礎となるプロバイダーオブジェクト
close
void close()アプリケーション管理エンティティマネージャーを閉じます。close()の呼び出し後、EntityManagerインスタンスのすべてのメソッド、およびそこから取得されたQuery、TypedQuery、またはStoredProcedureQueryのインスタンスのすべてのメソッドは、getProperties()、getTransaction()、isOpen()( false を返す) を除き、IllegalStateExceptionSE をスローします。エンティティマネージャーがアクティブなトランザクションに参加しているときにこのメソッドが呼び出された場合、永続コンテキストはトランザクションが完了するまで管理されたままになります。
- 次で指定:
- インターフェース
AutoCloseableSE内のclose - 例外:
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
新しい可変EntityGraphを作成し、エンティティグラフの動的な定義を可能にします。- パラメーター:
rootType- エンティティグラフのクラス- 戻り値:
- エンティティグラフ
- 導入:
- 2.1
createEntityGraph
名前付きのEntityGraphの変更可能なコピーを取得するか、指定された名前のエンティティグラフがない場合は null を返します。- パラメーター:
graphName- エンティティグラフの名前- 戻り値:
- エンティティグラフ
- 導入:
- 2.1
getEntityGraph
EntityGraphという名前のファイルを取得します。返されたEntityGraphのインスタンスは不変であると見なされます。- パラメーター:
graphName- 既存のエンティティグラフの名前- 戻り値:
- 名前付きエンティティグラフ
- 例外:
IllegalArgumentExceptionSE- 指定された名前のグラフの実体がない場合- 導入:
- 2.1
getEntityGraphs
指定されたエンティティクラス型に対して定義されている名前付きEntityGraphをすべて返します。- パラメーター:
entityClass- エンティティクラス- 戻り値:
- エンティティに定義されたすべてのエンティティグラフのリスト
- 例外:
IllegalArgumentExceptionSE- クラスがエンティティでない場合- 導入:
- 2.1
runWithConnection
このEntityManagerの基盤となるデータベース接続を使用して、指定されたアクションを実行します。通常、接続は JDBC 接続ですが、プロバイダは他のネイティブ接続型をサポートしている可能性があり、java.sql.Connectionをサポートする必要はありません。このEntityManagerがトランザクションに関連付けられている場合、アクションはトランザクションのコンテキストで実行されます。指定されたアクションは、作成したリソースをすべて閉じる必要がありますが、接続自体は閉じず、トランザクションをコミットまたはロールバックしてはなりません。指定されたアクションが例外をスローした場合、永続性プロバイダはトランザクションをロールバック対象としてマークする必要があります。- 型パラメーター:
C- 接続型、通常はjava.sql.Connection- パラメーター:
action- アクション- 例外:
PersistenceException-ConnectionConsumer.accept(C)によってスローされたチェック済みExceptionSE をラップします (存在する場合)- 導入:
- 3.2
callWithConnection
指定された関数を呼び出して、このEntityManagerの基になるデータベース接続を使用してその結果を返します。通常、接続は JDBC 接続ですが、プロバイダは他のネイティブ接続型をサポートしている可能性があり、java.sql.Connectionをサポートする必要はありません。このEntityManagerがトランザクションに関連付けられている場合、関数はトランザクションのコンテキストで実行されます。指定された関数は、作成するすべてのリソースを閉じる必要がありますが、接続自体は閉じず、トランザクションをコミットまたはロールバックしてはなりません。指定されたアクションが例外をスローした場合、永続性プロバイダはトランザクションをロールバック対象としてマークする必要があります。- 型パラメーター:
C- 接続型、通常はjava.sql.ConnectionT- 関数によって返される結果の型- パラメーター:
function- 関数- 戻り値:
ConnectionFunction.apply(C)によって返される値。- 例外:
PersistenceException-ConnectionFunction.apply(C)によってスローされたチェック済みExceptionSE をラップします (存在する場合)- 導入:
- 3.2