ibatis-user-java mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Dodo" <j2eed...@gmail.com>
Subject Re: autoCommit
Date Sat, 08 Jul 2006 08:14:52 GMT
Why not use BaseDaoiBATIS class from the Spring framework
and specify transaction levels from xml file to do auto commit?? 

So no manual code is required to commit

Makes life easier

Sam
  ----- Original Message ----- 
  From: Cornel Antohi 
  To: user-java@ibatis.apache.org 
  Sent: Friday, July 07, 2006 11:03 PM
  Subject: autoCommit


  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
Mime
View raw message