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