[jbossseam-issues] [JBoss JIRA] Commented: (JBSEAM-2093) Optimize getting Id in Seam code for better performance

Pete Muir (JIRA) jira-events at lists.jboss.org
Fri Oct 12 16:47:03 EDT 2007


    [ http://jira.jboss.com/jira/browse/JBSEAM-2093?page=comments#action_12382250 ] 
            
Pete Muir commented on JBSEAM-2093:
-----------------------------------

Are you using Hibernate, if so HibernatePersistenceProvider will be being used (and hence the Id looked up via the session).

I would like to see a profile of the use of PersistenceProvider.getId including stack so we can see if there are excessive calls from one point, and if we can cleverly cache the identifier there.

> Optimize getting Id in Seam code for better performance
> -------------------------------------------------------
>
>                 Key: JBSEAM-2093
>                 URL: http://jira.jboss.com/jira/browse/JBSEAM-2093
>             Project: JBoss Seam
>          Issue Type: Feature Request
>            Reporter: Mikhail Grushinskiy
>         Assigned To: Pete Muir
>            Priority: Minor
>             Fix For: 2.0.x
>
>
> This sequence of calls (used in PersistenceProvider) is quite slow
> Entity.forClass(bean.getClass()).getIdentifier(bean);
> 	
> 1) Entity.forClass() is reading annotations using JDK 5 methods (JDK 5 annotation reading is not that fast). Can it be cached?
> 2) JDK 5 reflection is used to get bean id (which is slower than optmized reflection with cglib)
> 3) There could be other reasons as well. I think repetitive calling of this sequence under profiler will give better picture.
> from PersistenceProvider.java
>    /**
>     * Get the value of the entity identifier attribute.
>     * 
>     * @param bean a managed entity instance
>     */
>    public Object getId(Object bean, EntityManager entityManager)
>    {
>       return Entity.forClass( bean.getClass() ).getIdentifier(bean);
>    }
>    
>    /**
>     * Get the name of the entity
>     * 
>     * @param bean
>     * @param entityManager
>     */
>    public String getName(Object bean, EntityManager entityManager)
>    {
>       return Entity.forClass(bean.getClass()).getName();
>    }
>    
>    /**
>     * Get the value of the entity version attribute.
>     * 
>     * @param bean a managed entity instance
>     */
>    public Object getVersion(Object bean, EntityManager entityManager)
>    {
>       return Entity.forClass( bean.getClass() ).getVersion(bean);
>    }

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        



More information about the seam-issues mailing list