|
Hi,
I have found in com.ibatis.sqlmap.engine.transaction.jdbc.JdbcTransaction
class, init method, the following lines of code:
//
AutoCommit
if (connection.getAutoCommit()) {
connection.setAutoCommit(false);
}
I do not understand why should it be set to "false" by
default, even I am running simple SELECT statements !
Using Websphere as application server, I am receiving the
following warning messages after each database call:
[7/7/06 13:40:41:111 EEST] 00000026 LocalTranCoor
W WLTC0032W: One or more local transaction resources were rolled
back during the cleanup of a LocalTransactionContainment.
and sometimes errors like Websphere cannot cleanup the
connection because it seems to be in a transaction !!!
One solution found on Internet is to setup in
sql-map-config:
<transactionManager type="JDBC"
commitRequired="true">
and iBatis will perform a commit() at the end (see
SqlMapConfigParser and TransactionManager classes):
txManager.setForceCommit("true".equals(attributes.getProperty("commitRequired")));
...
if (session.isCommitRequired() || forceCommit) {
trans.commit();
session.setCommitRequired(false);
}
My question is: why should I use "commitRequired=true"
even if I am executing a simple SELECT statement ? I feel that this
"commitRequired=true" is a workaround to a problem generated by wrong
initialization of the JdbcTransaction!
Thank you,
Cornel
|
- autoCommit Cornel Antohi
- Re: autoCommit Jeff Butler
- Re: autoCommit Cornel Antohi
- Re: autoCommit Jeff Butler
- Re: autoCommit Cornel Antohi
- Re: autoCommit Dodo
