[ 
https://issues.apache.org/jira/browse/OPENJPA-2120?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jeremy Bauer resolved OPENJPA-2120.
-----------------------------------

       Resolution: Fixed
    Fix Version/s: 2.3.0
    
> Add new option to eliminate reflection calls from enhancer generated IdClass 
> PC copy operations
> -----------------------------------------------------------------------------------------------
>
>                 Key: OPENJPA-2120
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-2120
>             Project: OpenJPA
>          Issue Type: Improvement
>          Components: Enhance, kernel, performance
>    Affects Versions: 2.2.0
>            Reporter: Jeremy Bauer
>            Assignee: Jeremy Bauer
>             Fix For: 2.3.0, 2.2.0
>
>
> Profiling has shown the code in the enhancer generated 
> pcCopyKeyFields(To/From)ObjectId to be costly when using id classes with an 
> entity that uses field access and has non-public fields.  Without public 
> fields, reflection is used to move the values from the parent entity to the 
> id class.  This also involves a costly temporary access switch.
> I have a fix that interrogates the id class for a public constructor and uses 
> that constructor (instead of costly reflection) during the copy operation.  
> It only works for certain IdClass and entity combinations.  IdClasses must 
> have a trivial public constructor with parameters that match those of the id 
> fields.  Trivial =  the constructor can only do direct field assignments from 
> the parameter values to the id class values.  No conversion can take place.  
> The constructor can have other logic, but the assignments must be direct.  
> The entity ids cannot be derived from other identities.  If these conditions 
> are not met, the enhancer falls back to using reflection.
> Since this change could result in an application behavior change (the 
> provider calling a new constructor) it is gated by the openjpa.OptimizeIdCopy 
> property, with the default being false.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to