Class DbEntityCache
- java.lang.Object
-
- org.camunda.bpm.engine.impl.db.entitymanager.cache.DbEntityCache
-
public class DbEntityCache extends java.lang.Object
A simple first level cache forEntities
.- Author:
- Daniel Meyer
-
-
Field Summary
Fields Modifier and Type Field Description protected java.util.Map<java.lang.Class<?>,java.util.Map<java.lang.String,CachedDbEntity>>
cachedEntites
The cache itself: maps entity types (classes) to maps indexed by id (primary key).protected DbEntityCacheKeyMapping
cacheKeyMapping
protected static EnginePersistenceLogger
LOG
-
Constructor Summary
Constructors Constructor Description DbEntityCache()
DbEntityCache(DbEntityCacheKeyMapping cacheKeyMapping)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
contains(DbEntity dbEntity)
Allows checking whether the provided entity is present in the cache<T extends DbEntity>
Tget(java.lang.Class<T> type, java.lang.String id)
get an object from the cachejava.util.List<CachedDbEntity>
getCachedEntities()
CachedDbEntity
getCachedEntity(java.lang.Class<?> type, java.lang.String id)
Looks up an entity in the cache.CachedDbEntity
getCachedEntity(DbEntity dbEntity)
Looks up an entity in the cache.<T extends DbEntity>
java.util.List<T>getEntitiesByType(java.lang.Class<T> type)
boolean
isDeleted(DbEntity dbEntity)
Allows checking whether the provided entity is present in the cache and is marked to be deleted.boolean
isPersistent(DbEntity dbEntity)
Allows checking whether the provided entity is present in the cache and isDbEntityState.PERSISTENT
.boolean
isTransient(DbEntity dbEntity)
Allows checking whether the provided entity is present in the cache and isDbEntityState.TRANSIENT
.protected void
putInternal(CachedDbEntity entityToAdd)
void
putMerged(DbEntity e)
Put aDbEntityState.MERGED
object into the cache.void
putPersistent(DbEntity e)
Put aDbEntityState.PERSISTENT
object into the cache.void
putTransient(DbEntity e)
Put a new,DbEntityState.TRANSIENT
object into the cache.boolean
remove(DbEntity e)
Remove an entity from the cachevoid
remove(CachedDbEntity cachedDbEntity)
void
setDeleted(DbEntity dbEntity)
Sets an object to a deleted state.void
undoDelete(DbEntity dbEntity)
-
-
-
Field Detail
-
LOG
protected static final EnginePersistenceLogger LOG
-
cachedEntites
protected java.util.Map<java.lang.Class<?>,java.util.Map<java.lang.String,CachedDbEntity>> cachedEntites
The cache itself: maps entity types (classes) to maps indexed by id (primary key). The motivation for indexing by type (class) is a) multiple entities of different types could have the same value as primary key. In the process engine, TaskEntity and HistoricTaskEntity have the same id value. b) performance (?)
-
cacheKeyMapping
protected DbEntityCacheKeyMapping cacheKeyMapping
-
-
Constructor Detail
-
DbEntityCache
public DbEntityCache()
-
DbEntityCache
public DbEntityCache(DbEntityCacheKeyMapping cacheKeyMapping)
-
-
Method Detail
-
get
public <T extends DbEntity> T get(java.lang.Class<T> type, java.lang.String id)
get an object from the cache- Parameters:
type
- the type of the objectid
- the id of the object- Returns:
- the object or 'null' if the object is not in the cache
- Throws:
ProcessEngineException
- if an object for the given id can be found but is of the wrong type.
-
getEntitiesByType
public <T extends DbEntity> java.util.List<T> getEntitiesByType(java.lang.Class<T> type)
-
getCachedEntity
public CachedDbEntity getCachedEntity(java.lang.Class<?> type, java.lang.String id)
Looks up an entity in the cache.- Parameters:
type
- the type of the objectid
- the id of the CachedEntity to lookup- Returns:
- the cached entity or null if the entity does not exist.
-
getCachedEntity
public CachedDbEntity getCachedEntity(DbEntity dbEntity)
Looks up an entity in the cache.- Parameters:
dbEntity
- the entity for which the CachedEntity should be looked up- Returns:
- the cached entity or null if the entity does not exist.
-
putTransient
public void putTransient(DbEntity e)
Put a new,DbEntityState.TRANSIENT
object into the cache.- Parameters:
e
- the object to put into the cache
-
putPersistent
public void putPersistent(DbEntity e)
Put aDbEntityState.PERSISTENT
object into the cache.- Parameters:
e
- the object to put into the cache
-
putMerged
public void putMerged(DbEntity e)
Put aDbEntityState.MERGED
object into the cache.- Parameters:
e
- the object to put into the cache
-
putInternal
protected void putInternal(CachedDbEntity entityToAdd)
-
remove
public boolean remove(DbEntity e)
Remove an entity from the cache- Parameters:
e
- the entity to remove- Returns:
-
remove
public void remove(CachedDbEntity cachedDbEntity)
- Parameters:
cachedDbEntity
-
-
contains
public boolean contains(DbEntity dbEntity)
Allows checking whether the provided entity is present in the cache- Parameters:
dbEntity
- the entity to check- Returns:
- true if the the provided entity is present in the cache
-
isPersistent
public boolean isPersistent(DbEntity dbEntity)
Allows checking whether the provided entity is present in the cache and isDbEntityState.PERSISTENT
.- Parameters:
dbEntity
- the entity to check- Returns:
- true if the provided entity is present in the cache and is
DbEntityState.PERSISTENT
.
-
isDeleted
public boolean isDeleted(DbEntity dbEntity)
Allows checking whether the provided entity is present in the cache and is marked to be deleted.- Parameters:
dbEntity
- the entity to check- Returns:
- true if the provided entity is present in the cache and is marked to be deleted
-
isTransient
public boolean isTransient(DbEntity dbEntity)
Allows checking whether the provided entity is present in the cache and isDbEntityState.TRANSIENT
.- Parameters:
dbEntity
- the entity to check- Returns:
- true if the provided entity is present in the cache and is
DbEntityState.TRANSIENT
.
-
getCachedEntities
public java.util.List<CachedDbEntity> getCachedEntities()
-
setDeleted
public void setDeleted(DbEntity dbEntity)
Sets an object to a deleted state. It will not be removed from the cache but transition to one of the DELETED states, depending on it's current state.- Parameters:
dbEntity
- the object to mark deleted.
-
undoDelete
public void undoDelete(DbEntity dbEntity)
-
-