Package org.hibernate.engine.internal
Class EntityEntryContext
java.lang.Object
org.hibernate.engine.internal.EntityEntryContext
Defines a context for maintaining the relation between an entity associated with the Session ultimately owning this
EntityEntryContext instance and that entity's corresponding EntityEntry. 2 approaches are supported:
- the entity->EntityEntry association is maintained in a Map within this class
-
the EntityEntry is injected into the entity via it implementing the
ManagedEntitycontract, either directly or through bytecode enhancement.
- Author:
- Steve Ebersole
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic interfaceUsed in building thereentrantSafeEntityEntries()entries -
Constructor Summary
ConstructorsConstructorDescriptionEntityEntryContext(PersistenceContext persistenceContext) Constructs a EntityEntryContext -
Method Summary
Modifier and TypeMethodDescriptionvoidaddEntityEntry(Object entity, EntityEntry entityEntry) Adds the entity and entry to this context, associating them togethervoidclear()Clear this context of all managed entitiesstatic EntityEntryContextJDK serialization hook for deserializingvoidDown-grade locks to NONE for all entities in this contextgetEntityEntry(Object entity) Retrieve the associated EntityEntry for the entityintbooleanhasEntityEntry(Object entity) Does this entity exist in this context, associated with an EntityEntry?The main bugaboo with IdentityMap that warranted this class in the first place.removeEntityEntry(Object entity) Remove an entity from the context, returning the EntityEntry which was associated with itvoidJDK serialization hook for serializing
-
Constructor Details
-
EntityEntryContext
Constructs a EntityEntryContext
-
-
Method Details
-
addEntityEntry
Adds the entity and entry to this context, associating them together- Parameters:
entity- The entityentityEntry- The entry
-
hasEntityEntry
Does this entity exist in this context, associated with an EntityEntry?- Parameters:
entity- The entity to check- Returns:
trueif it is associated with this context
-
getEntityEntry
Retrieve the associated EntityEntry for the entity- Parameters:
entity- The entity to retrieve the EntityEntry for- Returns:
- The associated EntityEntry
-
removeEntityEntry
Remove an entity from the context, returning the EntityEntry which was associated with it- Parameters:
entity- The entity to remove- Returns:
- Tjee EntityEntry
-
reentrantSafeEntityEntries
The main bugaboo with IdentityMap that warranted this class in the first place. Return an array of all the entity/EntityEntry pairs in this context. The array is to make sure that the iterators built off of it are safe from concurrency/reentrancy- Returns:
- The safe array
-
clear
public void clear()Clear this context of all managed entities -
downgradeLocks
public void downgradeLocks()Down-grade locks to NONE for all entities in this context -
serialize
JDK serialization hook for serializing- Parameters:
oos- The stream to write ourselves to- Throws:
IOException- Indicates an IO exception accessing the given stream
-
deserialize
public static EntityEntryContext deserialize(ObjectInputStream ois, StatefulPersistenceContext rtn) throws IOException, ClassNotFoundException JDK serialization hook for deserializing- Parameters:
ois- The stream to read ourselves fromrtn- The persistence context we belong to- Returns:
- The deserialized EntityEntryContext
- Throws:
IOException- Indicates an IO exception accessing the given streamClassNotFoundException- Problem reading stream data
-
getNumberOfManagedEntities
public int getNumberOfManagedEntities()
-