[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [eclipselink-users] Performance questions EclipseLink vs. Hibernate
|
Hello James,
db = oracle xe 10.2.0
os= win xp
jvm = Java 6
server tomcat 6.16
jdbc = Oracle JDBC Driver version - "10.2.0.3.0"
I don't use <property name="persistence.tools.weaving" value="true"> or
static weaving.
But why is this needed? What is the difference?
Are objects not lazy loaded when no weaving is enabled, but is the full
object graph loaded? Does weaving also influence performance when
persisting objects?
I have added the property: <property
name="eclipselink.jdbc.batch-writing" value="Oracle-JDBC"/>in
But noticed no performance difference. I'm still getting a
"java.lang.OutOfMemoryError: Java heap space".
I have not a security manager set in my JVM. I use a default jvm without
configurations.
In my persisting case, I'm looping through a List of entities and
persist them one by one.
After the loop I try to commit the transaction, but get a
"java.lang.OutOfMemoryError: Java heap space".
Like this
importedData = (Import) unmarshaller.unmarshal("huge xml file of size
10-50MB")
entityManager.getTransaction().begin();
for(Product product : importedData.getProducts) {
//product is a deep object graph with objects.
entityManager.persist(product);
}
entityManager.getTransaction().commit();
The strange thing is that it works with hibernate.
Leon
James Sutherland wrote:
This is very very odd, in our extensive performance testing we have done
comparing with Hibernate we have greatly exceed their performance is almost
every possible usecase we have tested. Could you please include more
details on exactly what your test is doing and exactly what your environment
is (db, os, jvm, server, jdbc).
My guess is you issue is related one of the following,
1 - You do not have weaving enabled in EclipseLink. EclipseLink requires
this to do lazy loading and change tracking. You must enable weaving either
through the agent, or static weaver.
2 - If using Oracle Hibernate enabled batch writing by default, where as you
must turn in on in EclipseLink through a persistence property.
3 - Do you have a security manager set in your jvm? There is a setting you
need to set currently for this in EclipseLink.
Leon Derks-2 wrote:
Hello,
Today we noticed differences in performance between EclipseLink and
Hibernate.
We had made up a test case with a big list of objects(Entities). Each
Enitity has references to other Entities / list of Entities.
Some of these Entities are shared and others are new.
To save one Entity from the main list took about 780 milliseconds to
persist the whole Object graph into the db.
There was not much difference between EclipseLink and Hibernate in this
case.
But when we iterated through the big list of entities and persisted them
one by one, there was a big difference between EclipseLink and Hibernate.
We tried one transaction for the whole list and also a single
transaction per Entity in the list.
Hibernate succeeded in every case and was much faster then EclipseLink
(sometimes 50% faster).
EclipseLink only succeeded when saving one Entity per transaction,
during the other cases (saving the whole list of objects in one
transaction) we did get "java.lang.OutOfMemoryError: Java heap space".
EclipseLink used almost 15 minutes to complete and Hibernate did the
same in 9 minutes.
Based on our results we would go for Hibernate at the moment. But are
there ways to speed up performance in EclipseLink?
Why is there so much difference in performance between Hibernate and
EclipseLink.
Leon
-----
---
http://wiki.eclipse.org/User:James.sutherland.oracle.com James Sutherland
http://www.eclipse.org/eclipselink/
EclipseLink , http://www.oracle.com/technology/products/ias/toplink/
TopLink
Wiki: http://wiki.eclipse.org/EclipseLink EclipseLink ,
http://wiki.oracle.com/page/TopLink TopLink
Forums: http://forums.oracle.com/forums/forum.jspa?forumID=48 TopLink ,
http://www.nabble.com/EclipseLink-f26430.html EclipseLink
Book: http://en.wikibooks.org/wiki/Java_Persistence Java Persistence