public class DefaultJpaDialect extends ObjectSE implements JpaDialect, SerializableSE
JpaDialect インターフェースのデフォルト実装。JpaTransactionManager がデフォルトのダイアレクトとして使用します。beginTransaction(javax.persistence.EntityManager, org.springframework.transaction.TransactionDefinition) で標準の JPA トランザクションを開始し、EntityManagerFactoryUtils を介して標準の例外変換を実行します。
NOTE: Spring の JPA サポートには、Spring 5.0 以降の JPA 2.1 以降が必要です。
JpaTransactionManager.setJpaDialect(org.springframework.orm.jpa.JpaDialect), 連載形式 | コンストラクターと説明 |
|---|
DefaultJpaDialect() |
| 修飾子と型 | メソッドと説明 |
|---|---|
ObjectSE | beginTransaction(EntityManagerEE entityManager, TransactionDefinition definition) この実装は、標準の JPA Transaction.begin メソッドを呼び出します。 |
void | cleanupTransaction(ObjectSE transactionData) デフォルトの beginTransaction 実装はクリーンアップを必要としないため、この実装は何も行いません。 |
ConnectionHandle | getJdbcConnection(EntityManagerEE entityManager, boolean readOnly) この実装は常に null を返し、JDBC 接続を提供できないことを示します。 |
ObjectSE | prepareTransaction(EntityManagerEE entityManager, boolean readOnly, StringSE name) 指定されたセマンティクスを適用して、JPA トランザクションを準備します。 |
void | releaseJdbcConnection(ConnectionHandle conHandle, EntityManagerEE em)Connection が EntityManager で暗黙的に閉じられると仮定すると、この実装は何もしません。 |
DataAccessException | translateExceptionIfPossible(RuntimeExceptionSE ex) この実装は、EntityManagerFactoryUtils に委譲します。 |
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE@Nullable public ObjectSE beginTransaction(EntityManagerEE entityManager, TransactionDefinition definition) throws PersistenceExceptionEE, SQLExceptionSE, TransactionException
Transaction.begin メソッドを呼び出します。デフォルト以外の分離レベルが設定されている場合、InvalidIsolationLevelException をスローします。 標準の JPA トランザクションには保持する状態がないため、この実装はトランザクションデータオブジェクトを返しません。サブクラスはこの実装の戻り値(null)を気にする必要がなく、独自のトランザクションデータオブジェクトを自由に返すことができます。
JpaDialect の beginTransaction entityManager - JPA トランザクションを開始する EntityManagerdefinition - セマンティクスを定義する Spring トランザクション定義 JpaDialect.cleanupTransaction(java.lang.Object) に渡される)。SavepointManager インターフェースを実装できます。PersistenceExceptionEE - JPA メソッドによってスローされた場合 SQLExceptionSE - JDBC メソッドによってスローされた場合 TransactionException - 無効な引数の場合 EntityTransaction.begin()EE, InvalidIsolationLevelException, cleanupTransaction(java.lang.Object)@Nullable public ObjectSE prepareTransaction(EntityManagerEE entityManager, boolean readOnly, @Nullable StringSE name) throws PersistenceExceptionEE
JpaDialect 実装では、読み取り専用フラグをフラッシュモードとして適用できます。その場合は、cleanupTransaction でリセットするために、以前のフラッシュモード(およびその他のデータ)を保持するトランザクションデータオブジェクトを返すことができます。
実装では、Spring トランザクション名を使用して、特定のデータアクセスのユースケースを最適化することもできます(現在のトランザクション名をユースケース識別子として効果的に使用します)。
JpaDialect の prepareTransaction entityManager - JPA トランザクションを開始する EntityManagerreadOnly - トランザクションが読み取り専用であるかどうか name - トランザクションの名前 (もしあれば)PersistenceExceptionEE - JPA メソッドによってスローされた場合 JpaDialect.cleanupTransaction(java.lang.Object)public void cleanupTransaction(@Nullable ObjectSE transactionData)
beginTransaction 実装はクリーンアップを必要としないため、この実装は何も行いません。JpaDialect の cleanupTransaction transactionData - トランザクションデータを保持する任意のオブジェクト(存在する場合) (beginTransaction または prepareTransaction によって返される)beginTransaction(javax.persistence.EntityManager, org.springframework.transaction.TransactionDefinition)@Nullable public ConnectionHandle getJdbcConnection(EntityManagerEE entityManager, boolean readOnly) throws PersistenceExceptionEE, SQLExceptionSE
null を返し、JDBC 接続を提供できないことを示します。JpaDialect の getJdbcConnection entityManager - 現在の JPA EntityManagerreadOnly - 接続が読み取り専用の目的でのみ必要かどうか releaseJdbcConnection または null に渡される、コネクションのハンドル PersistenceExceptionEE - JPA メソッドによってスローされた場合 SQLExceptionSE - JDBC メソッドによってスローされた場合 JpaDialect.releaseJdbcConnection(org.springframework.jdbc.datasource.ConnectionHandle, javax.persistence.EntityManager), ConnectionHandle.getConnection(), SimpleConnectionHandle, JpaTransactionManager.setDataSource(javax.sql.DataSource)public void releaseJdbcConnection(ConnectionHandle conHandle, EntityManagerEE em) throws PersistenceExceptionEE, SQLExceptionSE
JPA 実装が、使用後にアプリケーションが閉じることを期待する接続ハンドルを返す場合、ダイアレクト実装は Connection.close() (または同様の効果を持つ他のメソッド)をここで呼び出す必要があります。
JpaDialect の releaseJdbcConnection conHandle - 解放する JDBC 接続ハンドル em - 現在の JPA EntityManagerPersistenceExceptionEE - JPA メソッドによってスローされた場合 SQLExceptionSE - JDBC メソッドによってスローされた場合 Connection.close()SE@Nullable public DataAccessException translateExceptionIfPossible(RuntimeExceptionSE ex)
PersistenceExceptionTranslator の translateExceptionIfPossible ex - 変換する RuntimeExceptionnull。この場合、実際の永続性の問題ではなく、ユーザーコードが原因である可能性があります。)EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(java.lang.RuntimeException)