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