クラス EclipseLinkJpaDialect
- 実装されたすべてのインターフェース:
SerializableSE
、PersistenceExceptionTranslator
、JpaDialect
JpaDialect
実装。EclipseLink 3.0/4.0 と互換性があります。 デフォルトでは、このダイアレクトは非読み取り専用トランザクションの初期の JDBC 接続を使用して初期の EclipseLink トランザクションを取得します。これにより、同じトランザクション内で JDBC 操作と JPA 操作を混在させることができ、それらの影響を相互に可視化できます。これが必要ない場合は、"lazyDatabaseTransaction" フラグを true
に設定するか、影響を受けるすべてのトランザクションを一貫して読み取り専用として宣言します。Spring 4.1.2 では、これにより早期の JDBC 接続の取得が確実に回避され、EclipseLink が共有キャッシュモードに維持されます。
注: このダイアレクトは、制限付きでカスタム分離レベルをサポートします。一貫した分離レベルの処理は、すべての Spring トランザクション定義で具体的な分離レベルが指定されている場合にのみ保証されます。また、6.0.10 以降では、非読み取り専用および非遅延トランザクションでデフォルトの分離レベルを使用する場合にも保証されます。詳細は "lazyDatabaseTransaction" javadoc
を参照してください。
- 導入:
- 2.5.2
- 作成者:
- Juergen Hoeller
- 関連事項:
コンストラクターのサマリー
メソッドのサマリー
修飾子と型メソッド説明beginTransaction
(EntityManagerEE entityManager, TransactionDefinition definition) この実装は、標準の JPATransaction.begin
メソッドを呼び出します。getJdbcConnection
(EntityManagerEE entityManager, boolean readOnly) この実装は常にnull
を返し、JDBC 接続を提供できないことを示します。void
setLazyDatabaseTransaction
(boolean lazyDatabaseTransaction) Spring 管理の EclipseLink トランザクション内でデータベースリソーストランザクションを遅延開始するかどうかを設定します。クラス org.springframework.orm.jpa.DefaultJpaDialect から継承されたメソッド
cleanupTransaction, prepareTransaction, releaseJdbcConnection, translateExceptionIfPossible
コンストラクターの詳細
EclipseLinkJpaDialect
public EclipseLinkJpaDialect()
メソッドの詳細
setLazyDatabaseTransaction
public void setLazyDatabaseTransaction(boolean lazyDatabaseTransaction) Spring 管理の EclipseLink トランザクション内でデータベースリソーストランザクションを遅延開始するかどうかを設定します。デフォルトでは、読み取り専用トランザクションは遅延して開始されますが、通常の非読み取り専用トランザクションは早期に開始されます。これにより、EclipseLink トランザクション全体で同じ JDBC 接続を再利用できるようになり、同じ DataSource で動作する JDBC アクセスコードとの分離と一貫した可視性が強化されます。
JDBC レベルでの分離と可視性の重要性が低いと仮定すると、このフラグを "true" に切り替えて、非読み取り専用トランザクションでも遅延データベーストランザクションの開始を強制し、EclipseLink の共有キャッシュへのアクセスを許可し、EclipseLink の接続モード構成に従います。
注: 遅延データベーストランザクションは、カスタム分離レベルと組み合わせた場合に確実に動作することは保証されません。読み取り専用フラグとこの遅延フラグは注意して使用してください。他のトランザクションがカスタム分離レベルを使用する場合、読み取り専用トランザクションや遅延トランザクションを使用することはまったく推奨されません。そうしないと、読み取り専用または遅延アクセス中にデフォルト以外の分離レベルが使用される可能性があります。これが許容できない場合は、同時トランザクションの可能性があるカスタム分離レベルの隣に読み取り専用と遅延を使用しないでください。
- 関連事項:
UnitOfWork.beginEarlyTransaction()
TransactionDefinition.isReadOnly()
TransactionDefinition.getIsolationLevel()
beginTransaction
@Nullable 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
- 無効な引数の場合- 関連事項:
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 メソッドによってスローされた場合- 関連事項: