Class BlockingCache
java.lang.Object
org.apache.ibatis.cache.decorators.BlockingCache
- All Implemented Interfaces:
Cache
Simple blocking decorator
Simple and inefficient version of EhCache's BlockingCache decorator. It sets a lock over a cache key when the element is not found in cache. This way, other threads will wait until this element is filled instead of hitting the database.
By its nature, this implementation can cause deadlock when used incorrectly.
- Author:
- Eduardo Macarron
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
clear()
Clears this cache instance.getId()
int
getSize()
Optional.long
void
removeObject
(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.void
setTimeout
(long timeout) Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.apache.ibatis.cache.Cache
getReadWriteLock
-
Constructor Details
-
BlockingCache
-
-
Method Details
-
getId
-
getSize
public int getSize()Description copied from interface:Cache
Optional. This method is not called by the core. -
putObject
-
getObject
-
removeObject
Description copied from interface:Cache
As 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:
removeObject
in interfaceCache
- Parameters:
key
- The key- Returns:
- Not used
-
clear
public void clear()Description copied from interface:Cache
Clears this cache instance. -
getTimeout
public long getTimeout() -
setTimeout
public void setTimeout(long timeout)
-