〖使用iBatis做select后不提交也不回滚问题〗

06-03-04 qtmd2003
可能大家会笑select不需要commit,没谁会使用tran来select.

但ibatis使用connection后一律会setAutoCommite(false);

所以是应该commit,但它没有----当配置ibatis的连接来自连接池时就是如此,我的是jboss4的连接池

<dataSource type="JNDI">

<property name="DataSource" value="java:/SY_JXC"/>

</dataSource>

如果配置ibatis的连接来自己创建的连接时它会自动commit

<dataSource type="SIMPLE">

<property name="JDBC.Driver......

</dataSource>

执行下面申请隔离级别的select后可以看到数据库(sybase)中有了琐

<statement id="mys" parameterClass="java.lang.String" resultMap="mys_result">

有谁知道原因吗?

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE

SELECT COL1 FROM TABLE1

</statement>

qtmd2003
2006-03-04 23:29

可能大家会笑select不需要commit,没谁会使用tran来select.
但ibatis使用connection后一律会setAutoCommite(false);
所以是应该commit,但它没有----当配置ibatis的连接来自连接池时就是如此,我的是jboss4的连接池
    <dataSource type="JNDI">
      <property name="DataSource" value="java:/SY_JXC"/>
    </dataSource>
如果配置ibatis的连接来自己创建的连接时它会自动commit
   <dataSource type="SIMPLE">
      <property name="JDBC.Driver......"/>
   </dataSource>

执行下面申请隔离级别的select后可以看到数据库(sybase)中有了琐
   <statement id="mys" parameterClass="java.lang.String" resultMap="mys_result">
    SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
    SELECT COL1 FROM TABLE1 
  </statement>

qtmd2003
2006-03-05 23:02
原来要commitRequired="true"呀:)

banq
2006-03-09 11:13
如果是这样,使用iBatis查询性能不是要打折扣吗?

猜你喜欢