RegionFactory is asked to create
(RegionFactory#createTransactionContext}) when a Hibernate Session
is created. It's lifecycle is that of the Session. It receives
"transactional event callbacks" around joining and completing resource
transactions.
This allows the cache impl to book-keep data related to current transaction,
such as and process it in unique ways. E.g. this allows an impl to perform
batch updates if Hibernate is configured to use JDBC-only transactions,
and therefore information cannot be retrieved from the JTA transaction
assigned to current thread.
While transactional semantics might be fully implemented by the cache
provider, Hibernate may require different transactional semantics: In order
to prevent inconsistent reads, 2LC should not expose entities that are
modified in any concurrently executing transactions, and force DB load
instead. Native transactional implementation may provide looser semantics
and 2LC implementation has to adapt to these.
Implementation Note
Even though a JTA transaction may involve more than one Session the CacheTransactionContext is specific to each Session since the distinction is generally unimportant. However, a provider is free to attempt to scope these CacheTransactionContext instances in such a way that they may be associated with more than one Session at a time. This SPI is designed to not require this of the caching impl, but it certainly allows the provider to do it
| Modifier and Type | Method and Description |
|---|---|
| public default long | |
| public long | getCurrentTransactionStartTimestamp()
Deprecated
Use
What is the start time of this context object?
CacheTransactionSynchronization#getCachingTimestamp() instead.
|
| public void | transactionCompleted(boolean
Was the resource transaction successful? successful)Callback that the underling resource transaction to which the owning Session was joined is in the "completed" stage. |
| public void | transactionCompleting()
Callback that the underling resource transaction to which the owning Session was joined is in the beginning stages of completing. |
| public void | |
| public default void | |
| public default void |
| getCachingTimestamp | back to summary |
|---|---|
| public default long getCachingTimestamp() What is the start time of this context object? API Note If not currently joined to a transaction, the timestamp from the last transaction is safe to use. If not ever/yet joined to a transaction, a timestamp at the time the Session/CacheTransactionSynchronization were created should be returned. Implementation Specification This "timestamp" need not be related to timestamp in the Java Date/millisecond sense. It just needs to be an incrementing value. An UnsupportedOperationException is thrown if the Second Level Cache has not been enabled | |
| getCurrentTransactionStartTimestamp | back to summary |
|---|---|
| public long getCurrentTransactionStartTimestamp()
Deprecated Use What is the start time of this context object? API Note If not currently joined to a transaction, the timestamp from the last transaction is safe to use. If not ever/yet joined to a transaction, a timestamp at the time the Session/CacheTransactionSynchronization were created should be returned. Implementation Specification This "timestamp" need not be related to timestamp in the Java Date/millisecond sense. It just needs to be an incrementing value.
| |
| transactionCompleted | back to summary |
|---|---|
| public void transactionCompleted(boolean successful) Callback that the underling resource transaction to which the owning Session was joined is in the "completed" stage. This method is called regardless of success or failure of the transaction - the outcome is passed as a boolean.
| |
| transactionCompleting | back to summary |
|---|---|
| public void transactionCompleting() Callback that the underling resource transaction to which the owning Session was joined is in the beginning stages of completing. Note that this is only called for successful "begin completion" of the underlying resource transaction (not rolling-back, marked-for-rollback, etc) | |
| transactionJoined | back to summary |
|---|---|
| public void transactionJoined() Callback that owning Session has become joined to a resource transaction. API Note Implementors can consider this the effective start of a transaction. | |
| transactionResumed | back to summary |
|---|---|
| public default void transactionResumed() Currently not used. Here for future expansion Implementation Note Currently not used. JTA defines no standard means to be notified when a transaction is suspended nor resumed
| |
| transactionSuspended | back to summary |
|---|---|
| public default void transactionSuspended() Currently not used. Here for future expansion Implementation Note Currently not used. JTA defines no standard means to be notified when a transaction is suspended nor resumed. Such a feature is proposed.
| |