Class BlockingCache
- java.lang.Object
-
- org.apache.ibatis.cache.decorators.BlockingCache
-
- All Implemented Interfaces:
Cache
public class BlockingCache extends Object implements 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
Constructors Constructor Description BlockingCache(Cache delegate)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
clear()
Clears this cache instance.String
getId()
Object
getObject(Object key)
int
getSize()
Optional.long
getTimeout()
void
putObject(Object key, Object value)
Object
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 Detail
-
BlockingCache
public BlockingCache(Cache delegate)
-
-
Method Detail
-
getId
public String getId()
-
getSize
public int getSize()
Description copied from interface:Cache
Optional. This method is not called by the core.
-
removeObject
public Object removeObject(Object key)
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)
-
-