|
|||||||||
| Home >> All >> org >> apache >> ojb >> broker >> [ cache overview ] | PREV CLASS NEXT CLASS | ||||||||
SUMMARY: JAVADOC | SOURCE | DOWNLOAD | NESTED | FIELD | CONSTR | METHOD |
DETAIL: FIELD | CONSTR | METHOD | ||||||||
org.apache.ojb.broker.cache
Class ObjectCacheDefaultImpl

java.lang.Objectorg.apache.ojb.broker.cache.ObjectCacheDefaultImpl
- All Implemented Interfaces:
- ObjectCache
- public class ObjectCacheDefaultImpl
- extends java.lang.Object
- implements ObjectCache
- extends java.lang.Object
The ObjectCache stores all Objects loaded by the PersistenceBroker from a DB. When the PersistenceBroker tries to get an Object by its Primary key values it first lookups the cache if the object has been already loaded and cached. Using an ObjectCache has several advantages: - it increases performance as it reduces DB lookups. - it allows to perform circular lookups (as by crossreferenced objects) that would result in non-terminating loops without such a cache. - it maintains the uniqueness of objects as any Db row will be mapped to exactly one object. 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.
- Version:
- $Id: ObjectCacheDefaultImpl.java,v 1.4 2002/09/21 15:39:53 brj Exp $
| Field Summary | |
private long |
failCount
|
private long |
gcCount
|
private long |
hitCount
|
protected java.util.Hashtable |
objectTable
the hashtable holding all cached object |
| Constructor Summary | |
ObjectCacheDefaultImpl()
public Default Constructor |
|
| Method Summary | |
void |
cache(org.apache.ojb.broker.Identity oid,
java.lang.Object obj)
makes object persistent to the Objectcache. |
void |
cache(java.lang.Object obj)
Make object obj persistent to Objectcache. |
void |
clear()
clear ObjectCache. |
void |
finalize()
Called on an object by the Virtual Machine at most once, at some point after the Object is determined unreachable but before it is destroyed. |
java.lang.Object |
lookup(org.apache.ojb.broker.Identity oid)
Lookup object with Identity oid in objectTable. |
void |
remove(java.lang.Object obj)
removes an Object from the cache. |
| Methods inherited from class java.lang.Object |
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
objectTable
protected java.util.Hashtable objectTable
- the hashtable holding all cached object
hitCount
private long hitCount
failCount
private long failCount
gcCount
private long gcCount
| Constructor Detail |
ObjectCacheDefaultImpl
public ObjectCacheDefaultImpl()
- public Default Constructor
| Method Detail |
cache
public void cache(java.lang.Object obj) throws org.apache.ojb.broker.metadata.ClassNotPersistenceCapableException
- Make object obj persistent to Objectcache.
compute objects identity and use it as key for the hashmap
- Specified by:
cachein interfaceObjectCache
clear
public void clear()
- clear ObjectCache. I.e. remove all entries for classes and objects.
- Specified by:
clearin interfaceObjectCache
cache
public void cache(org.apache.ojb.broker.Identity oid, java.lang.Object obj)
- makes object persistent to the Objectcache.
I'm using soft-references to allow gc reclaim unused objects
even if they are still cached.
- Specified by:
cachein interfaceObjectCache
lookup
public java.lang.Object lookup(org.apache.ojb.broker.Identity oid)
- Lookup object with Identity oid in objectTable.
returns null if no matching id is found
- Specified by:
lookupin interfaceObjectCache
remove
public void remove(java.lang.Object obj)
- removes an Object from the cache.
- Specified by:
removein interfaceObjectCache
finalize
public void finalize()
- Description copied from class:
java.lang.Object - Called on an object by the Virtual Machine at most once,
at some point after the Object is determined unreachable
but before it is destroyed. You would think that this
means it eventually is called on every Object, but this is
not necessarily the case. If execution terminates
abnormally, garbage collection does not always happen.
Thus you cannot rely on this method to always work.
For finer control over garbage collection, use references
from the
java.lang.refpackage.Virtual Machines are free to not call this method if they can determine that it does nothing important; for example, if your class extends Object and overrides finalize to do simply
super.finalize().finalize() will be called by a java.lang.Thread that has no locks on any Objects, and may be called concurrently. There are no guarantees on the order in which multiple objects are finalized. This means that finalize() is usually unsuited for performing actions that must be thread-safe, and that your implementation must be use defensive programming if it is to always work.
If an Exception is thrown from finalize() during garbage collection, it will be patently ignored and the Object will still be destroyed.
It is allowed, although not typical, for user code to call finalize() directly. User invocation does not affect whether automatic invocation will occur. It is also permitted, although not recommended, for a finalize() method to "revive" an object by making it reachable from normal code again.
Unlike constructors, finalize() does not get called for an object's superclass unless the implementation specifically calls
super.finalize().The default implementation does nothing.
|
|||||||||
| Home >> All >> org >> apache >> ojb >> broker >> [ cache overview ] | PREV CLASS NEXT CLASS | ||||||||
SUMMARY: JAVADOC | SOURCE | DOWNLOAD | NESTED | FIELD | CONSTR | METHOD |
DETAIL: FIELD | CONSTR | METHOD | ||||||||
JAVADOC
org.apache.ojb.broker.cache.ObjectCacheDefaultImpl