openjpa-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ilan Kirsh <>
Subject Re: JPAB results
Date Mon, 15 Nov 2010 06:39:53 GMT

Thanks for all of you for the productive comments and tuning tips.

I ran the benchmark again using the new configuration and I updated the
results on:
The new run is marked as OpenJPA_R3.

There are less failures now (actually only one exception that is thrown a
few times when using client-server mode), but probably you will still be
interested in exploring the exceptions that are thrown when using the
default configuration.

Regarding performance, R3 is slightly better than R2, but the difference now
is not as large as the difference between R2 and the initial run.
Apparently, R2 already overcame the main performance issues, so the
additional tuning had less impact.

About MySQL - I think that Hibernate and EclipseLink use MyISAM, where
OpenJPA and DataNucleus use InnoDB. Is it possible to tell OpenJPA to use
MyISAM as well? It might be faster.

Here is an example of a persistence.xml file that was used by R3 (for

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns=""
xsi:schemaLocation="" version="2.0">
  <persistence-unit name="OpenJPA_R3-PostgreSQL-server">
      <property name="openjpa.ConnectionProperties"
Url=jdbc:postgresql://localhost:5432/jpab7493330740, MaxActive=100,
MaxWait=10000, TestOnBorrow=true, Username=postgres, Password=admin,
      <property name="openjpa.ConnectionRetainMode" value="always"/>
      <property name="openjpa.ConnectionDriverName"
      <property name="openjpa.jdbc.DBDictionary" value="batchLimit=100"/>
      <property name="openjpa.DataCache" value="true"/>
      <property name="openjpa.Log" value="DefaultLevel=ERROR"/>
      <property name="openjpa.jdbc.SynchronizeMappings"

I still don't see how results might be affected by schema generation. Time
measurement starts after about 30 seconds of intensive warm up of the tested
EntityManager, which includes using all the relevant user defined classes. I
don't think that additional schema generation activity should take place
after such warm up - and if it does it might be an issue that should be
solved and fixed on the implementation side. Nevertheless, if I am wrong - I
will be able to change the tests in way that every test will use 2 different
persistence units - one for warm up and second for test (persistence units
are generated automatically by the benchmark framework anyway).

In addition, although I agree that schema generation should be excluded from
time measurement I don't think that manual generation of the schema should
replace automatic schema generation by the tested tools, unless someone can
reveal significant differences in the schema that different ORM tools
generate for these tests.

I encourage you to explore the benchmark further. If you find a different
configuration that works better for OpenJPA I am willing to try it.

I would like to update the main website with better
OpenJPA results - but it has to be done with results of a publicly available
OpenJPA version, rather than with a development snapshot. So I might have to
wait for the release of OpenJPA 2.1

Thank you for your cooperation.

Best regards,
Ilan Kirsh
View this message in context:
Sent from the OpenJPA Users mailing list archive at

View raw message