Change By: Steve Ebersole (10/Jul/13 10:21 AM)
Description: Investigate Introduce {{org.hibernate.engine.internal.EntityEntryContext}}, {{org.hibernate.engine.spi.ManagedEntity}}, etc as a means to allow increased performance for Session-related memory and CPU overheads.  

{{org.hibernate.engine.internal.EntityEntryContext}} is a context for maintaining the relation between an entity associated with the Session owning this {{EntityEntryContext}} and that entity's corresponding {{org.hibernate.engine.spi.ManagedEntity}} reference.  

{{org.hibernate.engine.spi.ManagedEntity}} is a contract for describing an entity's association with a Session.  It gives us access to information (specific to each entity instance) such as it's {{org.hibernate.engine.spi.EntityEntry}} as well as defining a doubly-linked graph via {{org.hibernate.engine.spi.ManagedEntity#$$_hibernate_getPreviousManagedEntity}} and {{org.hibernate.engine.spi.ManagedEntity#$$_hibernate_getNextManagedEntity}} 

There are 2 forms of {{org.hibernate.engine.spi.ManagedEntity}} supported.  First is for the entity to implement the {{ManagedEntity}} interface, either directly or through bytecode manipulation.  Second is for Hibernate to "wrap" the entity in a {{ManagedEntity}} implementation (legacy Hibernate did this anyway, in terms of wrapping the entity as it was added to {{IdentityMap}}).

An Ant task to perform enhancing was added here as well.  Gradle and Maven support are tagged in HHH-8306 and HHH-8337, respectively.

See HHH-7963 for follow-on tasks...

----

Initially, this issue started as an investigation into
 expanding bytecode enhancement support to cover a variety of topics such as  
 
* removing load ( {{ EntityEntry }} , etc) from  {{  PersistenceContext }}  - important in removing reliance on  {{  IdentityMap }}  and reducing Session-related memory and CPU overheads

* dirtiness handling

* lazy initialization - both through interception and through generated "proxies" (generated class)

* bi-directional association management

* anything else?

The first bullet above is the feature implemented here.  The other bullets have all moved to HHH-7963 and its sub-tasks.
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira