You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@openjpa.apache.org by "Hans J. Prueller" <ha...@gmx.net> on 2007/03/14 19:18:52 UTC

openjpa performance copmared to toplink essentials

Hi together,

 

please allow me a simple question: I am currently preparing a "JPA" workshop
for a customer to show the developers

the new way of working with JPA persistence in Java EE 5. Just to show one
of the advantages of an open standard like JPA

I prepared the example to switch between OpenJPA and TopLink Essentials "on
the fly" just by changing the "provider"

setting in persistence.xml and keeping the sourcecode unchanged. 

 

Basically this works fine but what I found out was that when querying for
objects with one-to-many relation and accessing

the Collection (e.g. person.getAccount()), TopLink is about ten times faster
then OpenJPA. Oracle 9 Database is used as

DB. 

 

Did I miss any tuning parameters or something that could enhance OpenJPA
performance? I just can't imagine that there

are performance differences for simple "tutorial" application in that order
of magnitude!

 

regards,

HANS

 

=========================== 
virtually hanzz...

 

 <http://hanzz.zapto.org> http://hanzz.zapto.org (personal)
 <http://www.cse.dmu.ac.uk/~hansp> http://www.cse.dmu.ac.uk/~hansp
(research)

 


Re: openjpa performance copmared to toplink essentials

Posted by Marc Prud'hommeaux <mp...@apache.org>.
Hans-

My first guess is that Toplink might be eagerly loading the relation,  
and OpenJPA is lazily loading it (i.e., it doesn't load the relation  
when you issue the query, so every time you call person.getAccount(),  
OpenJPA has to go back to the database). To verify this, you could  
enable SQL logging (see the docs for details) and observe the SQL  
that OpenJPA is executing.

Configuring eager fetching is a broad topic and is covered in detail  
in the documentation, but the quickest way to speed up the query  
might just be to add in a "join fetch" clause to the query. E.g., if  
your current query is "select p from Person p", then changing the  
query to be "select p from Person p join fetch account" might be  
sufficient to speed up the query.

Let us know if that doesn't work, and we can discuss more diagnostic  
and tuning steps you can take. I'm confident that OpenJPA's  
performance is at least be comparable to other implementations, and  
in many cases is significantly faster.



On Mar 14, 2007, at 11:18 AM, Hans J. Prueller wrote:

> Hi together,
>
>
>
> please allow me a simple question: I am currently preparing a "JPA"  
> workshop
> for a customer to show the developers
>
> the new way of working with JPA persistence in Java EE 5. Just to  
> show one
> of the advantages of an open standard like JPA
>
> I prepared the example to switch between OpenJPA and TopLink  
> Essentials "on
> the fly" just by changing the "provider"
>
> setting in persistence.xml and keeping the sourcecode unchanged.
>
>
>
> Basically this works fine but what I found out was that when  
> querying for
> objects with one-to-many relation and accessing
>
> the Collection (e.g. person.getAccount()), TopLink is about ten  
> times faster
> then OpenJPA. Oracle 9 Database is used as
>
> DB.
>
>
>
> Did I miss any tuning parameters or something that could enhance  
> OpenJPA
> performance? I just can't imagine that there
>
> are performance differences for simple "tutorial" application in  
> that order
> of magnitude!
>
>
>
> regards,
>
> HANS
>
>
>
> ===========================
> virtually hanzz...
>
>
>
>  <http://hanzz.zapto.org> http://hanzz.zapto.org (personal)
>  <http://www.cse.dmu.ac.uk/~hansp> http://www.cse.dmu.ac.uk/~hansp
> (research)
>
>
>