Class EntityEntryContext

java.lang.Object
org.hibernate.engine.internal.EntityEntryContext

public class EntityEntryContext extends Object
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. Two approaches are supported:
  • the entity to EntityEntry association is maintained in a {code @Map} within this class, or
  • the EntityEntry is injected into the entity via it implementing the ManagedEntity contract, either directly or through bytecode enhancement.
  • Constructor Details

    • EntityEntryContext

      public EntityEntryContext(PersistenceContext persistenceContext)
      Constructs a EntityEntryContext
  • Method Details

    • addEntityEntry

      public void addEntityEntry(Object entity, EntityEntry entityEntry)
      Adds the entity and EntityEntry to this context, associating them.
      Parameters:
      entity - The entity
      entityEntry - The entry
    • hasEntityEntry

      public boolean hasEntityEntry(Object entity)
      Does this entity exist in this context, associated with an EntityEntry?
      Parameters:
      entity - The entity to check
      Returns:
      true if it is associated with this context
    • getEntityEntry

      public EntityEntry getEntityEntry(Object entity)
      Retrieve the associated EntityEntry for the given entity.
      Parameters:
      entity - The entity
      Returns:
      The associated EntityEntry
    • removeEntityEntry

      public EntityEntry removeEntityEntry(Object entity)
      Remove an entity from the context, returning its EntityEntry.
      Parameters:
      entity - The entity to remove
      Returns:
      The removed EntityEntry
    • reentrantSafeEntityEntries

      public Map.Entry<Object,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 LockMode.NONE for all entities in this context
    • serialize

      public void serialize(ObjectOutputStream oos) throws IOException
      JDK serialization hook for serializing
      Parameters:
      oos - The stream to write ourselves to
      Throws:
      IOException - Indicates an IO exception accessing the given stream
    • deserialize

      JDK serialization hook for deserializing
      Parameters:
      ois - The stream to read ourselves from
      rtn - The persistence context we belong to
      Returns:
      The deserialized EntityEntryContext
      Throws:
      IOException - Indicates an IO exception accessing the given stream
      ClassNotFoundException - Problem reading stream data
    • getNumberOfManagedEntities

      public int getNumberOfManagedEntities()