Sorry for the previous mail, I inadvertently sent it half-ready :-(
Hello,
I made a small performance test comparing different Cayenne solutions with JDBC solutions. What I found was that in Insert operations, it is best to use Cayenne data objects (as opposed to raw SQL queries), while for Update and Delete the case is the opposite. I guess this may not surprise you :-)
So for Insert, this worked best for me:
public void insertRecords(int count) {
Date date = new Date();
for (int index = 1; index <= count; index++) {
TestData testData = (TestData) context.newObject(TestData.class);
testData.setName(nextName());
testData.setDescription(nextDescription());
testData.setCount(new Integer(count - index));
testData.setCreated(date);
if (index % 1000 == 0) {
context.commitChanges();
}
}
context.commitChanges();
}
while for Update and Delete, something like this:
public void updateRecords(int lowerLimit, int upperLimit) {
final SQLTemplate query = new SQLTemplate(TestData.class,
"update test_data set description = '$desc' where count > $lower and count < $upper");
Map params = new HashMap();
params.put("desc", nextDescription());
params.put("lower", new Integer(lowerLimit));
params.put("upper", new Integer(upperLimit));
context.performNonSelectingQuery(query.createQuery(params));
}
Any hints on how to make these methods faster?
Thanks in advance,
Péter
This archive was generated by hypermail 2.0.0 : Mon Mar 12 2007 - 10:40:39 EDT