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)
>
>
>