Class TransactionalCache
java.lang.Object
org.apache.ibatis.cache.decorators.TransactionalCache
- All Implemented Interfaces:
Cache
The 2nd level cache transactional buffer.
This class holds all cache entries that are to be added to the 2nd level cache during a Session. Entries are sent to the cache when commit is called or discarded if the Session is rolled back. Blocking cache support has been added. Therefore any get() that returns a cache miss will be followed by a put() so any lock associated with the key can be released.
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidclear()Clears this cache instance.voidcommit()private voidgetId()intgetSize()Optional.voidremoveObject(Object key) As of 3.3.0 this method is only called during a rollback for any previous value that was missing in the cache.private voidreset()voidrollback()private voidMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.apache.ibatis.cache.Cache
getReadWriteLock
-
Field Details
-
log
-
delegate
-
clearOnCommit
private boolean clearOnCommit -
entriesToAddOnCommit
-
entriesMissedInCache
-
-
Constructor Details
-
TransactionalCache
-
-
Method Details
-
getId
-
getSize
public int getSize()Description copied from interface:CacheOptional. This method is not called by the core. -
getObject
-
putObject
-
removeObject
Description copied from interface:CacheAs of 3.3.0 this method is only called during a rollback for any previous value that was missing in the cache. This lets any blocking cache to release the lock that may have previously put on the key. A blocking cache puts a lock when a value is null and releases it when the value is back again. This way other threads will wait for the value to be available instead of hitting the database.- Specified by:
removeObjectin interfaceCache- Parameters:
key- The key- Returns:
- Not used
-
clear
public void clear()Description copied from interface:CacheClears this cache instance. -
commit
public void commit() -
rollback
public void rollback() -
reset
private void reset() -
flushPendingEntries
private void flushPendingEntries() -
unlockMissedEntries
private void unlockMissedEntries()
-