Hi Clinton,

Murphy's law is validated again: I am using Oracle :(

If I am using in a method N SELECT queries with commitRequired=true, iBATIS makes N commit() (one at the end of each query), right? Do you have any clue / recommendation how to minimize this overhead using iBATIS + Oracle?

Thank you,
Cornel


----- Original Message ----- From: "Clinton Begin" <[EMAIL PROTECTED]>
To: <user-java@ibatis.apache.org>
Sent: Thursday, January 25, 2007 6:55 PM
Subject: Re: Autocommit not properly handled in Ibatis.


In hindsight I wish I had made the default commitRequired=true...

I believe the only database that really suffers from unecessary
commits is Oracle.  The other RDBMS are actually pretty good about not
incurring additional overhead, and in fact Sybase drivers I've used
demand that either commit or rollback be called in all cases except
AutoCommit of course.

Anyway, unless you're using Oracle, feel free to make your lives
easier by just setting commitRequired=true..  :-)

Clinton

On 1/25/07, Cornel Antohi <[EMAIL PROTECTED]> wrote:


Hi Koka,

In case of iBATIS commitRequired=false, if you execute SELECT statements,
they are grouped into a transaction that "is terminated by a call to either
the method commit or the method rollback" ... because iBATIS never calls
commit() or rollback() it means that iBATIS do not handle properly the
transactions, right?


Thank you,
Cornel


----- Original Message -----
From: Koka Kiknadze
To: user-java@ibatis.apache.org
Sent: Thursday, January 25, 2007 5:21 PM
Subject: Re: Autocommit not properly handled in Ibatis.



>
>
> In iBATIS SELECT case, no commit or rollback is executed ...
>
> Question:
> How do you interpret this fact?
>

Not sure what kind of interpretation you ask for ;)

Again, if the code looks like (you can leave out startTransaction /
commitTransaction in defaultAutocommit=true mode, as iBatis will internally
add those for any SQL statement) :
sqlMapClient.startTransaction();
sqlMapClient..queryFor...();
sqlMapClient.commitTransaction();

Underlying connection object's commit() method is NOT called if
commitRequired property is set to false (it would get called if it were
insert/update etc.), and vice versa - connection.commit() IS called if
commitRequired = true. Setting commitRequired =false saves extra commit
calls when no data has changed.








Reply via email to