public class EclipseLinkJpaDialect extends DefaultJpaDialect
JpaDialect
実装。EclipseLink 2.7 に対して開発およびテスト。実行時に EclipseLink 2.5 および 2.6 と下位互換性があります。 デフォルトでは、このクラスは、非読み取り専用トランザクション用の初期の JDBC 接続で初期の EclipseLink トランザクションを取得します。これにより、JDBC と JPA/EclipseLink の操作を同じトランザクションで混在させることができ、それらの影響を相互に可視化できます。これが不要な場合は、"lazyDatabaseTransaction" フラグを true
に設定するか、影響を受けるすべてのトランザクションを読み取り専用として一貫して宣言してください。Spring 4.1.2 以降、これにより JDBC 接続の早期取得が確実に回避され、EclipseLink が共有キャッシュモードに維持されます。
setLazyDatabaseTransaction(boolean)
, LazyConnectionDataSourceProxy
, 直列化された形式 コンストラクターと説明 |
---|
EclipseLinkJpaDialect() |
修飾子と型 | メソッドと説明 |
---|---|
ObjectSE | beginTransaction(EntityManagerEE entityManager, TransactionDefinition definition) この実装は、標準の JPA Transaction.begin メソッドを呼び出します。 |
ConnectionHandle | getJdbcConnection(EntityManagerEE entityManager, boolean readOnly) この実装は常に null を返し、JDBC 接続を提供できないことを示します。 |
void | setLazyDatabaseTransaction(boolean lazyDatabaseTransaction) Spring 管理の EclipseLink トランザクション内でデータベースリソーストランザクションを遅延開始するかどうかを設定します。 |
cleanupTransaction, prepareTransaction, releaseJdbcConnection, translateExceptionIfPossible
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE
public void setLazyDatabaseTransaction(boolean lazyDatabaseTransaction)
デフォルトでは、読み取り専用トランザクションは遅延して開始されますが、通常の非読み取り専用トランザクションは早期に開始されます。これにより、EclipseLink トランザクション全体で同じ JDBC 接続を再利用できるようになり、同じ DataSource で動作する JDBC アクセスコードとの分離と一貫した可視性が強化されます。
JDBC レベルでの分離と可視性の重要性が低いと仮定すると、このフラグを "true" に切り替えて、非読み取り専用トランザクションでも遅延データベーストランザクションの開始を強制し、EclipseLink の共有キャッシュへのアクセスを許可し、EclipseLink の接続モード構成に従います。
UnitOfWork.beginEarlyTransaction()
@Nullable public ObjectSE beginTransaction(EntityManagerEE entityManager, TransactionDefinition definition) throws PersistenceExceptionEE, SQLExceptionSE, TransactionException
DefaultJpaDialect
Transaction.begin
メソッドを呼び出します。デフォルト以外の分離レベルが設定されている場合、InvalidIsolationLevelException をスローします。 標準の JPA トランザクションには保持する状態がないため、この実装はトランザクションデータオブジェクトを返しません。サブクラスはこの実装の戻り値(null
)を気にする必要がなく、独自のトランザクションデータオブジェクトを自由に返すことができます。
JpaDialect
の beginTransaction
DefaultJpaDialect
の beginTransaction
entityManager
- JPA トランザクションを開始する EntityManagerdefinition
- セマンティクスを定義する Spring トランザクション定義 JpaDialect.cleanupTransaction(java.lang.Object)
に渡される)。SavepointManager
インターフェースを実装できます。PersistenceExceptionEE
- JPA メソッドによってスローされた場合 SQLExceptionSE
- JDBC メソッドによってスローされた場合 TransactionException
- 無効な引数の場合 EntityTransaction.begin()
EE, InvalidIsolationLevelException
, DefaultJpaDialect.cleanupTransaction(java.lang.Object)
public ConnectionHandle getJdbcConnection(EntityManagerEE entityManager, boolean readOnly) throws PersistenceExceptionEE, SQLExceptionSE
DefaultJpaDialect
null
を返し、JDBC 接続を提供できないことを示します。JpaDialect
の getJdbcConnection
DefaultJpaDialect
の getJdbcConnection
entityManager
- 現在の JPA EntityManagerreadOnly
- 接続が読み取り専用の目的でのみ必要かどうか releaseJdbcConnection
または null
に渡される、コネクションのハンドル PersistenceExceptionEE
- JPA メソッドによってスローされた場合 SQLExceptionSE
- JDBC メソッドによってスローされた場合 JpaDialect.releaseJdbcConnection(org.springframework.jdbc.datasource.ConnectionHandle, javax.persistence.EntityManager)
, ConnectionHandle.getConnection()
, SimpleConnectionHandle
, JpaTransactionManager.setDataSource(javax.sql.DataSource)