OpenJPA with H2 server

Performance Result Summary

The final position of OpenJPA with H2 server in the speed performance tests is 30 out of 32,

The following charts show OpenJPA with H2 server relatively to other tested JPA/DBMS combinations.

Position #1 on the X-Axis (the fastest) is about 100 times faster than position #32 (the slowest).
In the chart below the Y-Axis represents result score (maximum 100) in logarithmic scale - higher is better:
JPA performance benchmark comparision Hibernate, EclipseLink, OpenJPA, DataNucleus, ObjectDB
In the chart below the Y-Axis represents result score (maximum 100) in linear scale - higher is better:
JPA performance benchmark comparision Hibernate, EclipseLink, OpenJPA, DataNucleus, ObjectDB

OpenJPA with H2 server Problems (Exceptions)

OpenJPA with H2 server has failed in the following tests (throwing the following stack traces):

  • Multithreading Test - Query Operations - Few Entities (5/100)
     org.apache.openjpa.persistence.ArgumentException: Failed to execute query "SELECT o FROM Person o WHERE o.lastName LIKE :pattern". Check the query syntax for correctness. See nested exception for details.
    	at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:870)
    	at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:792)
    	at org.apache.openjpa.kernel.DelegatingQuery.execute(DelegatingQuery.java:542)
    	at org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:288)
    	at org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:302)
    	at org.jpab.Test.query(Test.java:314)
    	at org.jpab.Runner$QueryAction.run0(Runner.java:552)
    	at org.jpab.Runner$TestAction.run(Runner.java:507)
    	at java.lang.Thread.run(Thread.java:619)
    Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
    	at org.apache.openjpa.jdbc.kernel.PreparedSQLStoreQuery$PreparedSQLExecutor.toParameterArray(PreparedSQLStoreQuery.java:157)
    	at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:855)
    	... 8 more
    
  • Multithreading Test - Query Operations - Many Entities (5000)
     org.apache.openjpa.persistence.ArgumentException: Failed to execute query "SELECT o FROM Person o WHERE o.lastName LIKE :pattern". Check the query syntax for correctness. See nested exception for details.
    	at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:870)
    	at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:792)
    	at org.apache.openjpa.kernel.DelegatingQuery.execute(DelegatingQuery.java:542)
    	at org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:288)
    	at org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:302)
    	at org.jpab.Test.query(Test.java:314)
    	at org.jpab.Runner$QueryAction.run0(Runner.java:552)
    	at org.jpab.Runner$TestAction.run(Runner.java:507)
    	at java.lang.Thread.run(Thread.java:619)
    Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
    	at org.apache.openjpa.jdbc.kernel.PreparedSQLStoreQuery$PreparedSQLExecutor.toParameterArray(PreparedSQLStoreQuery.java:157)
    	at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:855)
    	... 8 more
    

The following runs have been stopped due to being too slow

  • Graph (Binary Tree) Test - Persistence Operations - Many Entities (5000)
  • Graph (Binary Tree) Test - Retrieval Operations - Few Entities (5/100)
  • Graph (Binary Tree) Test - Retrieval Operations - Many Entities (5000)
  • Graph (Binary Tree) Test - Update Operations - Few Entities (5/100)
  • Graph (Binary Tree) Test - Update Operations - Many Entities (5000)
  • Graph (Binary Tree) Test - Removal Operations - Few Entities (5/100)
  • Graph (Binary Tree) Test - Removal Operations - Many Entities (5000)

OpenJPA with H2 server compared to the alternatives

See head to head comparisons of OpenJPA with H2 server vs the following compatitors: