Wanted: performance tuning hints

From: Török Péte (torok..llround.net)
Date: Mon Mar 12 2007 - 10:40:15 EDT

  • Next message: Andrus Adamchik: "Re: Wanted: performance tuning hints"

    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