クラス DefaultJpaDialect

java.lang.ObjectSE
org.springframework.orm.jpa.DefaultJpaDialect
実装されているすべてのインターフェース:
SerializableSE, PersistenceExceptionTranslator, JpaDialect
既知の直属サブクラス
EclipseLinkJpaDialect, HibernateJpaDialect

public class DefaultJpaDialect extends ObjectSE implements JpaDialect, SerializableSE
JpaDialect インターフェースのデフォルト実装。JpaTransactionManager がデフォルトのダイアレクトとして使用します。

beginTransaction(EntityManager, TransactionDefinition) で標準の JPA トランザクションを開始し、EntityManagerFactoryUtils を介して標準の例外変換を実行します。

導入:
2.0
作成者:
Juergen Hoeller
関連事項:
  • コンストラクターの詳細

    • DefaultJpaDialect

      public DefaultJpaDialect()
  • メソッドの詳細

    • beginTransaction

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

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

      次で指定:
      インターフェース JpaDialectbeginTransaction 
      パラメーター:
      entityManager - JPA トランザクションを開始する EntityManager
      definition - セマンティクスを定義する 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
      インターフェースからコピーされた説明: JpaDialect
      指定されたセマンティクスを適用して、JPA トランザクションを準備します。EntityManager を JTA トランザクションまたはローカルに参加したトランザクションに登録するときに、EntityManagerFactoryUtils によって呼び出されます (たとえば、非同期の EntityManager を同期された EntityManager にアップグレードした後など)。

      実装では、読み取り専用フラグをフラッシュモードとして適用できます。その場合は、cleanupTransaction でリセットするために、以前のフラッシュモード(およびその他のデータ)を保持するトランザクションデータオブジェクトを返すことができます。

      実装では、Spring トランザクション名を使用して、特定のデータアクセスのユースケースを最適化することもできます(現在のトランザクション名をユースケース識別子として効果的に使用します)。

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

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

      public @Nullable ConnectionHandle getJdbcConnection(jakarta.persistence.EntityManager entityManager, boolean readOnly) throws jakarta.persistence.PersistenceException, SQLExceptionSE
      この実装は常に null を返し、JDBC 接続を提供できないことを示します。
      次で指定:
      インターフェース JpaDialectgetJdbcConnection 
      パラメーター:
      entityManager - 現在の JPA EntityManager
      readOnly - 接続が読み取り専用の目的でのみ必要かどうか
      戻り値:
      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() (または同様の効果を持つ他のメソッド)をここで呼び出す必要があります。

      次で指定:
      インターフェース JpaDialectreleaseJdbcConnection 
      パラメーター:
      conHandle - 解放する JDBC 接続ハンドル
      em - 現在の JPA EntityManager
      例外:
      jakarta.persistence.PersistenceException - JPA メソッドによってスローされた場合
      SQLExceptionSE - JDBC メソッドによってスローされた場合
      関連事項:
    • translateExceptionIfPossible

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