クラス 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 を介して標準の例外変換を実行します。

利用可能な場合、読み取り専用トランザクション用の JPA 4.0 の FlushModeType.EXPLICIT をサポートします。

導入:
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 をスローします。

      この実装は、必要に応じてフラッシュモードリセット用のトランザクションデータを返し、それに応じて prepareFlushMode(EntityManager, boolean) を呼び出します。サブクラスで再利用することも、独自のフラッシュモード処理に置き換えることも可能です。

      次で指定:
      インターフェース 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
      この実装では、必要に応じてフラッシュモードリセットのためのトランザクションデータを返し、それに応じて prepareFlushMode(EntityManager, boolean) を呼び出します。
      次で指定:
      インターフェース JpaDialectprepareTransaction 
      パラメーター:
      entityManager - JPA トランザクションを開始する EntityManager
      readOnly - トランザクションが読み取り専用であるかどうか
      name - トランザクションの名前 (もしあれば)
      戻り値:
      トランザクションデータがある場合、それを保持する任意のオブジェクト (JpaDialect.cleanupTransaction(Object) に渡される)
      例外:
      jakarta.persistence.PersistenceException - JPA メソッドによってスローされた場合
      関連事項:
    • prepareFlushMode

      protected @Nullable ObjectSE prepareFlushMode(jakarta.persistence.EntityManager entityManager, boolean readOnly)
      必要に応じて、フラッシュモードリセット用のトランザクションデータを準備してください。JPA 4.0 の読み取り専用トランザクションにのみ適用されます。

      beginTransaction(EntityManager, TransactionDefinition)prepareTransaction(EntityManager, boolean, String) の両方で使用されます。ベンダー固有のサブクラスの対応するオーバーライドされたメソッドで再利用することも、カスタムのフラッシュモード処理に置き換えることもできます。

      パラメーター:
      entityManager - JPA トランザクションを開始する EntityManager
      readOnly - トランザクションが読み取り専用であるかどうか
      戻り値:
      必要に応じて、フラッシュモードリセットのためのトランザクションデータ (beginTransaction(EntityManager, TransactionDefinition)/prepareTransaction(EntityManager, boolean, String) から返却され、完了後に cleanupTransaction(Object) に渡されます。)
      導入:
      7.0.6
    • cleanupTransaction

      public void cleanupTransaction(@Nullable ObjectSE transactionData)
      この実装では、必要に応じてフラッシュモードをリセットします。
      次で指定:
      インターフェース 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 メソッドによってスローされた場合
      関連事項:
    • deriveEntityAgent

      public @Nullable ObjectSE deriveEntityAgent(jakarta.persistence.EntityManager entityManager, @Nullable MapSE<?,?> properties) throws jakarta.persistence.PersistenceException
      可能であれば、トランザクションコンテキストを共有しながら、指定された EntityManager から新しい EntityAgent を導出します。

      注: このメソッドは、Spring の初期 JPA 4.0 サポート用に設計されています。JPA 3.2 との互換性を保つため、戻り値の型を jakarta.persistence.EntityAgent に強制することはできません。サブクラスでは、可能であれば独自の EntityAgent 型でオーバーライドし、そうでない場合は共変の戻り値型として EntityAgent のみをオーバーライドする必要があります。これにより、JpaDialect インターフェース自体におけるこのメソッドの将来のバリアントとの前方互換性が確保されます。

      パラメーター:
      entityManager - 現在の JPA EntityManager
      properties - EntityAgent のプロパティ(ある場合)
      戻り値:
      新しい EntityAgent インスタンス、または導出できない場合は null 
      例外:
      jakarta.persistence.PersistenceException - JPA メソッドによってスローされた場合
      導入:
      7.0.4
    • translateExceptionIfPossible

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