spring 3.1: jdbcTemplate auto commit to false.

Chun ping Wang picture Chun ping Wang · May 25, 2012 · Viewed 18.4k times · Source

Hi Is their a way to set autocommit to false in spring jdbctemplate.

The thing is instead of transaction (where their is rollback option), I want to have query committed at end of transaction.

So instead of

insert --> commit --> rollback.

I want insert --> fail --> (no commit).

Answer

Bruno Penteado picture Bruno Penteado · Feb 19, 2013

I did not understand your whole question, but I can answer the first part: Is there a way to set autocommit to false in spring jdbctemplate?

The autocommit configuration is normally set on the connection itself. The Connection is created by the Datasource. As the JdbcTemplate does not have an option to manually disable auto commit in the connections it requests to the Datasource, the way to achieve this is using a Datasource that creates connections with autocommit set to false by default.

This example configuration using apache commons BasicDataSource achieves that:

<bean id="database" class="org.springframework.jdbc.core.JdbcTemplate">
    <property name="dataSource">
        <bean class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
            ...
            <property name="defaultAutoCommit" value="false" />
            ...
        </bean>
    </property>
</bean>