クラス HibernateJpaDialect

java.lang.ObjectSE
org.springframework.orm.jpa.DefaultJpaDialect
org.springframework.orm.jpa.vendor.HibernateJpaDialect
実装されているすべてのインターフェース:
SerializableSE, PersistenceExceptionTranslator, JpaDialect

public class HibernateJpaDialect extends DefaultJpaDialect
Hibernate 用の JpaDialect 実装。Hibernate ORM 7.x と互換性があります。
導入:
2.0
作成者:
Juergen Hoeller, Costin Leau
関連事項:
  • コンストラクターの詳細

    • 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

      public void setJdbcExceptionTranslator(@Nullable SQLExceptionTranslator exceptionTranslator)
      Hibernate 例外変換の目的で JDBC 例外トランスレーターを設定します。

      Hibernate JDBCException の検出された SQLExceptionSE 根本原因に適用され、Hibernate 自身の SQLException 変換をオーバーライドします(特定のターゲットデータベースの Hibernate ダイアレクトに基づきます)。

      6.1 以降、SQLExceptionSE 根本原因 (Hibernate 自体はまったく変換されない) を持つ TransactionException 変換にも適用され、そこで Spring のデフォルトの SQLExceptionSubclassTranslator がオーバーライドされます。

      パラメーター:
      exceptionTranslator - 委譲先の SQLExceptionTranslator、または委譲しない場合は null。デフォルトでは、6.1 では SQLExceptionSubclassTranslatorTransactionException 変換に使用されます。ここで null を設定することで、これを 6.1 より前の動作に戻すことができます。
      導入:
      5.1
      関連事項:
    • beginTransaction

      public ObjectSE beginTransaction(jakarta.persistence.EntityManager entityManager, TransactionDefinition definition) throws jakarta.persistence.PersistenceException, SQLExceptionSE, TransactionException
      クラスからコピーされた説明: DefaultJpaDialect
      この実装は、標準の JPA Transaction.begin メソッドを呼び出します。デフォルト以外の分離レベルが設定されている場合、InvalidIsolationLevelException をスローします。

      標準の JPA トランザクションには保持する状態がないため、この実装はトランザクションデータオブジェクトを返しません。サブクラスはこの実装の戻り値(null)を気にする必要がなく、独自のトランザクションデータオブジェクトを自由に返すことができます。

      次で指定:
      インターフェース JpaDialectbeginTransaction 
      オーバーライド:
      クラス DefaultJpaDialectbeginTransaction 
      パラメーター:
      entityManager - JPA トランザクションを開始する EntityManager
      definition - セマンティクスを定義する 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 トランザクション名を使用して、特定のデータアクセスのユースケースを最適化することもできます(現在のトランザクション名をユースケース識別子として効果的に使用します)。

      次で指定:
      インターフェース JpaDialectprepareTransaction 
      オーバーライド:
      クラス DefaultJpaDialectprepareTransaction 
      パラメーター:
      entityManager - JPA トランザクションを開始する EntityManager
      readOnly - トランザクションが読み取り専用であるかどうか
      name - トランザクションの名前 (もしあれば)
      戻り値:
      トランザクションデータがある場合、それを保持する任意のオブジェクト (cleanupTransaction に渡される)
      例外:
      jakarta.persistence.PersistenceException - JPA メソッドによってスローされた場合
      関連事項:
    • prepareFlushMode

      protected @Nullable FlushMode prepareFlushMode(Session session, boolean readOnly) throws jakarta.persistence.PersistenceException
      例外:
      jakarta.persistence.PersistenceException
    • cleanupTransaction

      public void cleanupTransaction(@Nullable ObjectSE transactionData)
      クラスからコピーされた説明: DefaultJpaDialect
      デフォルトの beginTransaction 実装はクリーンアップを必要としないため、この実装は何も行いません。
      次で指定:
      インターフェース JpaDialectcleanupTransaction 
      オーバーライド:
      クラス DefaultJpaDialectcleanupTransaction 
      パラメーター:
      transactionData - トランザクションデータを保持する任意のオブジェクト(存在する場合) (beginTransaction または prepareTransaction によって返される)
      関連事項:
    • getJdbcConnection

      public ConnectionHandle getJdbcConnection(jakarta.persistence.EntityManager entityManager, boolean readOnly) throws jakarta.persistence.PersistenceException, SQLExceptionSE
      クラスからコピーされた説明: DefaultJpaDialect
      この実装は常に null を返し、JDBC 接続を提供できないことを示します。
      次で指定:
      インターフェース JpaDialectgetJdbcConnection 
      オーバーライド:
      クラス DefaultJpaDialectgetJdbcConnection 
      パラメーター:
      entityManager - 現在の JPA EntityManager
      readOnly - 接続が読み取り専用の目的でのみ必要かどうか
      戻り値:
      JDBC コネクションを取得できない場合、releaseJdbcConnection または null に渡される、コネクションのハンドル
      例外:
      jakarta.persistence.PersistenceException - JPA メソッドによってスローされた場合
      SQLExceptionSE - JDBC メソッドによってスローされた場合
      関連事項:
    • translateExceptionIfPossible

      public @Nullable DataAccessException translateExceptionIfPossible(RuntimeExceptionSE ex)
      クラスからコピーされた説明: DefaultJpaDialect
      この実装は、EntityManagerFactoryUtils に委譲します。
      次で指定:
      インターフェース PersistenceExceptionTranslatortranslateExceptionIfPossible 
      オーバーライド:
      クラス DefaultJpaDialecttranslateExceptionIfPossible 
      パラメーター:
      ex - 変換する RuntimeException
      戻り値:
      対応する DataAccessException (または、例外を変換できなかった場合は null。この場合、実際の永続性の問題ではなく、ユーザーコードが原因である可能性があります。)
      関連事項: