クラス DefaultJpaDialect
- 実装済みのインターフェース一覧:
SerializableSE, PersistenceExceptionTranslator, JpaDialect
- 既知の直属サブクラス
EclipseLinkJpaDialect, HibernateJpaDialect
JpaDialect インターフェースのデフォルト実装。JpaTransactionManager がデフォルトのダイアレクトとして使用します。beginTransaction(EntityManager, TransactionDefinition) で標準の JPA トランザクションを開始し、EntityManagerFactoryUtils を介して標準の例外変換を実行します。
利用可能な場合、読み取り専用トランザクション用の JPA 4.0 の FlushModeType.EXPLICIT をサポートします。
- 導入:
- 2.0
- 作成者:
- Juergen Hoeller
- 関連事項:
コンストラクター概要
コンストラクター方法の概要
修飾子と型メソッド説明beginTransaction(jakarta.persistence.EntityManager entityManager, TransactionDefinition definition) この実装は、標準の JPATransaction.beginメソッドを呼び出します。voidcleanupTransaction(@Nullable ObjectSE transactionData) この実装では、必要に応じてフラッシュモードをリセットします。deriveEntityAgent(jakarta.persistence.EntityManager entityManager, @Nullable MapSE<?, ?> properties) 可能であれば、トランザクションコンテキストを共有しながら、指定されたEntityManagerから新しいEntityAgentを導出します。getJdbcConnection(jakarta.persistence.EntityManager entityManager, boolean readOnly) この実装は常にnullを返し、JDBC 接続を提供できないことを示します。prepareFlushMode(jakarta.persistence.EntityManager entityManager, boolean readOnly) 必要に応じて、フラッシュモードリセット用のトランザクションデータを準備してください。prepareTransaction(jakarta.persistence.EntityManager entityManager, boolean readOnly, @Nullable StringSE name) この実装では、必要に応じてフラッシュモードリセットのためのトランザクションデータを返し、それに応じてprepareFlushMode(EntityManager, boolean)を呼び出します。voidreleaseJdbcConnection(ConnectionHandle conHandle, jakarta.persistence.EntityManager em) Connection が EntityManager で暗黙的に閉じられると仮定すると、この実装は何もしません。この実装は、EntityManagerFactoryUtils に委譲します。
コンストラクターの詳細
DefaultJpaDialect
public DefaultJpaDialect()
メソッドの詳細
beginTransaction
public @Nullable ObjectSE beginTransaction(jakarta.persistence.EntityManager entityManager, TransactionDefinition definition) throws jakarta.persistence.PersistenceException, SQLExceptionSE, TransactionException この実装は、標準の JPATransaction.beginメソッドを呼び出します。デフォルト以外の分離レベルが設定されている場合、InvalidIsolationLevelException をスローします。この実装は、必要に応じてフラッシュモードリセット用のトランザクションデータを返し、それに応じて
prepareFlushMode(EntityManager, boolean)を呼び出します。サブクラスで再利用することも、独自のフラッシュモード処理に置き換えることも可能です。- 次で指定:
- インターフェース
JpaDialectのbeginTransaction - パラメーター:
entityManager- JPA トランザクションを開始する EntityManagerdefinition- セマンティクスを定義する Spring トランザクション定義- 戻り値:
- トランザクションデータがある場合、それを保持する任意のオブジェクト(
JpaDialect.cleanupTransaction(Object)に渡される)。SavepointManagerインターフェースを実装できます。 - 例外:
jakarta.persistence.PersistenceException- JPA メソッドによってスローされた場合SQLExceptionSE- JDBC メソッドによってスローされた場合TransactionException- 無効な引数の場合- 関連事項:
prepareTransaction
public @Nullable ObjectSE prepareTransaction(jakarta.persistence.EntityManager entityManager, boolean readOnly, @Nullable StringSE name) throws jakarta.persistence.PersistenceException この実装では、必要に応じてフラッシュモードリセットのためのトランザクションデータを返し、それに応じてprepareFlushMode(EntityManager, boolean)を呼び出します。- 次で指定:
- インターフェース
JpaDialectのprepareTransaction - パラメーター:
entityManager- JPA トランザクションを開始する EntityManagerreadOnly- トランザクションが読み取り専用であるかどうかname- トランザクションの名前 (もしあれば)- 戻り値:
- トランザクションデータがある場合、それを保持する任意のオブジェクト (
JpaDialect.cleanupTransaction(Object)に渡される) - 例外:
jakarta.persistence.PersistenceException- JPA メソッドによってスローされた場合- 関連事項:
prepareFlushMode
protected @Nullable ObjectSE prepareFlushMode(jakarta.persistence.EntityManager entityManager, boolean readOnly) 必要に応じて、フラッシュモードリセット用のトランザクションデータを準備してください。JPA 4.0 の読み取り専用トランザクションにのみ適用されます。beginTransaction(EntityManager, TransactionDefinition)とprepareTransaction(EntityManager, boolean, String)の両方で使用されます。ベンダー固有のサブクラスの対応するオーバーライドされたメソッドで再利用することも、カスタムのフラッシュモード処理に置き換えることもできます。- パラメーター:
entityManager- JPA トランザクションを開始する EntityManagerreadOnly- トランザクションが読み取り専用であるかどうか- 戻り値:
- 必要に応じて、フラッシュモードリセットのためのトランザクションデータ (
beginTransaction(EntityManager, TransactionDefinition)/prepareTransaction(EntityManager, boolean, String)から返却され、完了後にcleanupTransaction(Object)に渡されます。) - 導入:
- 7.0.6
cleanupTransaction
この実装では、必要に応じてフラッシュモードをリセットします。- 次で指定:
- インターフェース
JpaDialectのcleanupTransaction - パラメーター:
transactionData- トランザクションデータを保持する任意のオブジェクト(存在する場合) (beginTransaction または prepareTransaction によって返される)- 関連事項:
getJdbcConnection
public @Nullable ConnectionHandle getJdbcConnection(jakarta.persistence.EntityManager entityManager, boolean readOnly) throws jakarta.persistence.PersistenceException, SQLExceptionSE この実装は常にnullを返し、JDBC 接続を提供できないことを示します。- 次で指定:
- インターフェース
JpaDialectのgetJdbcConnection - パラメーター:
entityManager- 現在の JPA EntityManagerreadOnly- 接続が読み取り専用の目的でのみ必要かどうか- 戻り値:
- JDBC コネクションを取得できない場合、
releaseJdbcConnectionまたはnullに渡される、コネクションのハンドル - 例外:
jakarta.persistence.PersistenceException- JPA メソッドによってスローされた場合SQLExceptionSE- JDBC メソッドによってスローされた場合- 関連事項:
releaseJdbcConnection
public void releaseJdbcConnection(ConnectionHandle conHandle, jakarta.persistence.EntityManager em) throws jakarta.persistence.PersistenceException, SQLExceptionSE Connection が EntityManager で暗黙的に閉じられると仮定すると、この実装は何もしません。JPA 実装が、使用後にアプリケーションが閉じることを期待する接続ハンドルを返す場合、ダイアレクト実装は
Connection.close()(または同様の効果を持つ他のメソッド)をここで呼び出す必要があります。- 次で指定:
- インターフェース
JpaDialectのreleaseJdbcConnection - パラメーター:
conHandle- 解放する JDBC 接続ハンドルem- 現在の JPA EntityManager- 例外:
jakarta.persistence.PersistenceException- JPA メソッドによってスローされた場合SQLExceptionSE- JDBC メソッドによってスローされた場合- 関連事項:
deriveEntityAgent
public @Nullable ObjectSE deriveEntityAgent(jakarta.persistence.EntityManager entityManager, @Nullable MapSE<?, ?> properties) throws jakarta.persistence.PersistenceException可能であれば、トランザクションコンテキストを共有しながら、指定されたEntityManagerから新しいEntityAgentを導出します。注: このメソッドは、Spring の初期 JPA 4.0 サポート用に設計されています。JPA 3.2 との互換性を保つため、戻り値の型を
jakarta.persistence.EntityAgentに強制することはできません。サブクラスでは、可能であれば独自の EntityAgent 型でオーバーライドし、そうでない場合は共変の戻り値型として EntityAgent のみをオーバーライドする必要があります。これにより、JpaDialectインターフェース自体におけるこのメソッドの将来のバリアントとの前方互換性が確保されます。- パラメーター:
entityManager- 現在の JPA EntityManagerproperties- EntityAgent のプロパティ(ある場合)- 戻り値:
- 新しい EntityAgent インスタンス、または導出できない場合は
null - 例外:
jakarta.persistence.PersistenceException- JPA メソッドによってスローされた場合- 導入:
- 7.0.4
translateExceptionIfPossible
この実装は、EntityManagerFactoryUtils に委譲します。- 次で指定:
- インターフェース
PersistenceExceptionTranslatorのtranslateExceptionIfPossible - パラメーター:
ex- 変換する RuntimeException- 戻り値:
- 対応する DataAccessException (または、例外を変換できなかった場合は
null。この場合、実際の永続性の問題ではなく、ユーザーコードが原因である可能性があります。) - 関連事項: