|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.apache.ojb.broker.cache.ObjectCacheDefaultImpl
This global ObjectCache stores all Objects loaded by the PersistenceBroker
from a DB using a static Map
. This means each ObjectCache
instance associated with all PersistenceBroker
instances use the same
Map
to cache objects. This could lead in "dirty-reads" (similar to read-uncommitted
mode in DB) when a concurrent thread look up same object modified by another thread.
When the PersistenceBroker tries to get an Object by its Identity
.
It first lookups the cache if the object has been already loaded and cached.
The cache uses soft-references which allows objects (softly) referenced by
the cache to be reclaimed by the Java Garbage Collector when they are not
longer referenced elsewhere.
Implementation configuration properties:
Property Key | Property Values |
timeout |
Lifetime of the cached objects in seconds.
If expired the cached object was not returned
on lookup call (and removed from cache). Default timeout
value is 900 seconds. When set to -1 the lifetime of
the cached object depends only on GC and do never get timed out.
NOTE: Objects internal cached via |
autoSync |
If set true all cached/looked up objects within a PB-transaction are traced.
If the the PB-transaction was aborted all traced objects will be removed from
cache. Default is false.
NOTE: This does not prevent "dirty-reads" (more info see above).
It's not a smart solution for keeping cache in sync with DB but should do the job
in most cases.
|
Nested Class Summary | |
(package private) class |
ObjectCacheDefaultImpl.CacheEntry
|
Field Summary | |
static java.lang.String |
AUTOSYNC_PROP
|
protected PersistenceBroker |
broker
|
protected static java.util.Map |
objectTable
static Map held all cached objects |
static java.lang.String |
TIMEOUT_PROP
|
Constructor Summary | |
ObjectCacheDefaultImpl(PersistenceBroker broker,
java.util.Properties prop)
|
Method Summary | |
void |
afterBegin(PBStateEvent event)
Called after a PersistenceBroker transaction was started. |
void |
afterCommit(PBStateEvent event)
Called after a PersistenceBroker commit was called. |
void |
afterOpen(PBStateEvent event)
Called after the PersistenceBroker
instance was obtained from pool. |
void |
afterRollback(PBStateEvent event)
Called after a PersistenceBroker rollback was called. |
void |
beforeBegin(PBStateEvent event)
Called before a PersistenceBroker transaction was started. |
void |
beforeClose(PBStateEvent event)
Called before the PersistenceBroker
instance was returned to pool. |
void |
beforeCommit(PBStateEvent event)
Called before a PersistenceBroker commit was called. |
void |
beforeRollback(PBStateEvent event)
Called before a PersistenceBroker rollback was called. |
void |
cache(Identity oid,
java.lang.Object obj)
Makes object persistent to the Objectcache. |
void |
clear()
Clear ObjectCache. |
protected void |
finalize()
|
java.lang.Object |
lookup(Identity oid)
Lookup object with Identity oid in objectTable. |
void |
remove(Identity oid)
Removes an Object from the cache. |
java.lang.String |
toString()
|
Methods inherited from class java.lang.Object |
clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
public static final java.lang.String TIMEOUT_PROP
public static final java.lang.String AUTOSYNC_PROP
protected static java.util.Map objectTable
protected PersistenceBroker broker
Constructor Detail |
public ObjectCacheDefaultImpl(PersistenceBroker broker, java.util.Properties prop)
Method Detail |
public void clear()
clear
in interface ObjectCache
public void cache(Identity oid, java.lang.Object obj)
cache
in interface ObjectCache
public java.lang.Object lookup(Identity oid)
lookup
in interface ObjectCache
public void remove(Identity oid)
remove
in interface ObjectCache
oid
- Identity of the object to be removed.public java.lang.String toString()
protected void finalize()
public void beforeRollback(PBStateEvent event)
PBStateListener
beforeRollback
in interface PBStateListener
public void beforeCommit(PBStateEvent event)
PBStateListener
beforeCommit
in interface PBStateListener
public void beforeClose(PBStateEvent event)
PBStateListener
PersistenceBroker
instance was returned to pool.
beforeClose
in interface PBStateListener
public void afterRollback(PBStateEvent event)
PBStateListener
afterRollback
in interface PBStateListener
public void afterCommit(PBStateEvent event)
PBStateListener
afterCommit
in interface PBStateListener
public void afterBegin(PBStateEvent event)
PBStateListener
afterBegin
in interface PBStateListener
public void beforeBegin(PBStateEvent event)
PBStateListener
beforeBegin
in interface PBStateListener
public void afterOpen(PBStateEvent event)
PBStateListener
PersistenceBroker
instance was obtained from pool.
afterOpen
in interface PBStateListener
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |