クラス HibernateJpaDialect
- 実装されているすべてのインターフェース:
SerializableSE, PersistenceExceptionTranslator, JpaDialect
JpaDialect 実装。Hibernate ORM 7.x と互換性があります。- 導入:
- 2.0
- 作成者:
- Juergen Hoeller, Costin Leau
- 関連事項:
コンストラクターの概要
コンストラクターメソッドのサマリー
修飾子と型メソッド説明beginTransaction(jakarta.persistence.EntityManager entityManager, TransactionDefinition definition) この実装は、標準の JPATransaction.beginメソッドを呼び出します。voidcleanupTransaction(@Nullable ObjectSE transactionData) デフォルトのbeginTransaction実装はクリーンアップを必要としないため、この実装は何も行いません。getJdbcConnection(jakarta.persistence.EntityManager entityManager, boolean readOnly) この実装は常にnullを返し、JDBC 接続を提供できないことを示します。prepareFlushMode(Session session, boolean readOnly) prepareTransaction(jakarta.persistence.EntityManager entityManager, boolean readOnly, @Nullable StringSE name) 指定されたセマンティクスを適用して、JPA トランザクションを準備します。voidsetJdbcExceptionTranslator(@Nullable SQLExceptionTranslator exceptionTranslator) Hibernate 例外変換の目的で JDBC 例外トランスレーターを設定します。voidsetPrepareConnection(boolean prepareConnection) トランザクション Hibernate セッションの基盤となる JDBC 接続を準備するかどうか、つまり、基盤となる JDBC 接続にトランザクション固有の分離レベルやトランザクションの読み取り専用フラグを適用するかどうかを設定します。この実装は、EntityManagerFactoryUtils に委譲します。クラス DefaultJpaDialect から継承されたメソッド
releaseJdbcConnection
コンストラクターの詳細
HibernateJpaDialect
public HibernateJpaDialect()
メソッドの詳細
setPrepareConnection
public void setPrepareConnection(boolean prepareConnection) トランザクション Hibernate セッションの基盤となる JDBC 接続を準備するかどうか、つまり、基盤となる JDBC 接続にトランザクション固有の分離レベルやトランザクションの読み取り専用フラグを適用するかどうかを設定します。デフォルトは "true" です。このフラグをオフにすると、JPA トランザクション管理はトランザクションごとの分離レベルをサポートしなくなります。また、読み取り専用トランザクションの場合も
Connection.setReadOnly(true)を呼び出しません。このフラグをオフにすると、接続設定は変更されないため、トランザクション後に JDBC 接続をクリーンアップする必要はありません。注意 : Spring 4.1 で読み取り専用処理に関するデフォルトの動作が変更され、他の Spring トランザクションマネージャーと同様に、読み取り専用ステータスが JDBC 接続に伝播されるようになりました。これにより、以前は書き込みアクセスが誤って許容されていた読み取り専用の適用が実行されるという影響がある可能性があります。: トランザクション宣言を適宜修正し、必要に応じて無効な読み取り専用マーカーを削除してください。
- 導入:
- 4.1
- 関連事項:
setJdbcExceptionTranslator
Hibernate 例外変換の目的で JDBC 例外トランスレーターを設定します。Hibernate
JDBCExceptionの検出されたSQLExceptionSE 根本原因に適用され、Hibernate 自身のSQLException変換をオーバーライドします(特定のターゲットデータベースの Hibernate ダイアレクトに基づきます)。6.1 以降、
SQLExceptionSE 根本原因 (Hibernate 自体はまったく変換されない) を持つTransactionException変換にも適用され、そこで Spring のデフォルトのSQLExceptionSubclassTranslatorがオーバーライドされます。- パラメーター:
exceptionTranslator- 委譲先のSQLExceptionTranslator、または委譲しない場合はnull。デフォルトでは、6.1 ではSQLExceptionSubclassTranslatorがTransactionException変換に使用されます。ここでnullを設定することで、これを 6.1 より前の動作に戻すことができます。- 導入:
- 5.1
- 関連事項:
beginTransaction
public ObjectSE beginTransaction(jakarta.persistence.EntityManager entityManager, TransactionDefinition definition) throws jakarta.persistence.PersistenceException, SQLExceptionSE, TransactionException クラスからコピーされた説明:DefaultJpaDialectこの実装は、標準の JPATransaction.beginメソッドを呼び出します。デフォルト以外の分離レベルが設定されている場合、InvalidIsolationLevelException をスローします。標準の JPA トランザクションには保持する状態がないため、この実装はトランザクションデータオブジェクトを返しません。サブクラスはこの実装の戻り値(
null)を気にする必要がなく、独自のトランザクションデータオブジェクトを自由に返すことができます。- 次で指定:
- インターフェース
JpaDialectのbeginTransaction - オーバーライド:
- クラス
DefaultJpaDialectのbeginTransaction - パラメーター:
entityManager- JPA トランザクションを開始する EntityManagerdefinition- セマンティクスを定義する Spring トランザクション定義- 戻り値:
- トランザクションデータがある場合、それを保持する任意のオブジェクト(
JpaDialect.cleanupTransaction(Object)に渡される)。SavepointManagerインターフェースを実装できます。 - 例外:
jakarta.persistence.PersistenceException- JPA メソッドによってスローされた場合SQLExceptionSE- JDBC メソッドによってスローされた場合TransactionException- 無効な引数の場合- 関連事項:
prepareTransaction
public ObjectSE prepareTransaction(jakarta.persistence.EntityManager entityManager, boolean readOnly, @Nullable StringSE name) throws jakarta.persistence.PersistenceException インターフェースからコピーされた説明:JpaDialect指定されたセマンティクスを適用して、JPA トランザクションを準備します。EntityManager を JTA トランザクションまたはローカルに参加したトランザクションに登録するときに、EntityManagerFactoryUtils によって呼び出されます (たとえば、非同期の EntityManager を同期された EntityManager にアップグレードした後など)。実装では、読み取り専用フラグをフラッシュモードとして適用できます。その場合は、
cleanupTransactionでリセットするために、以前のフラッシュモード(およびその他のデータ)を保持するトランザクションデータオブジェクトを返すことができます。実装では、Spring トランザクション名を使用して、特定のデータアクセスのユースケースを最適化することもできます(現在のトランザクション名をユースケース識別子として効果的に使用します)。
- 次で指定:
- インターフェース
JpaDialectのprepareTransaction - オーバーライド:
- クラス
DefaultJpaDialectのprepareTransaction - パラメーター:
entityManager- JPA トランザクションを開始する EntityManagerreadOnly- トランザクションが読み取り専用であるかどうかname- トランザクションの名前 (もしあれば)- 戻り値:
- トランザクションデータがある場合、それを保持する任意のオブジェクト (cleanupTransaction に渡される)
- 例外:
jakarta.persistence.PersistenceException- JPA メソッドによってスローされた場合- 関連事項:
prepareFlushMode
cleanupTransaction
クラスからコピーされた説明:DefaultJpaDialectデフォルトのbeginTransaction実装はクリーンアップを必要としないため、この実装は何も行いません。- 次で指定:
- インターフェース
JpaDialectのcleanupTransaction - オーバーライド:
- クラス
DefaultJpaDialectのcleanupTransaction - パラメーター:
transactionData- トランザクションデータを保持する任意のオブジェクト(存在する場合) (beginTransaction または prepareTransaction によって返される)- 関連事項:
getJdbcConnection
public ConnectionHandle getJdbcConnection(jakarta.persistence.EntityManager entityManager, boolean readOnly) throws jakarta.persistence.PersistenceException, SQLExceptionSE クラスからコピーされた説明:DefaultJpaDialectこの実装は常にnullを返し、JDBC 接続を提供できないことを示します。- 次で指定:
- インターフェース
JpaDialectのgetJdbcConnection - オーバーライド:
- クラス
DefaultJpaDialectのgetJdbcConnection - パラメーター:
entityManager- 現在の JPA EntityManagerreadOnly- 接続が読み取り専用の目的でのみ必要かどうか- 戻り値:
- JDBC コネクションを取得できない場合、
releaseJdbcConnectionまたはnullに渡される、コネクションのハンドル - 例外:
jakarta.persistence.PersistenceException- JPA メソッドによってスローされた場合SQLExceptionSE- JDBC メソッドによってスローされた場合- 関連事項:
translateExceptionIfPossible
クラスからコピーされた説明:DefaultJpaDialectこの実装は、EntityManagerFactoryUtils に委譲します。- 次で指定:
- インターフェース
PersistenceExceptionTranslatorのtranslateExceptionIfPossible - オーバーライド:
- クラス
DefaultJpaDialectのtranslateExceptionIfPossible - パラメーター:
ex- 変換する RuntimeException- 戻り値:
- 対応する DataAccessException (または、例外を変換できなかった場合は
null。この場合、実際の永続性の問題ではなく、ユーザーコードが原因である可能性があります。) - 関連事項: