[Seasar-user:21492] Re: jdbc.diconにおけるPostgreSQLのautoCommit設定について

YASUO HIGA [E-MAIL ADDRESS DELETED]
2012年 11月 6日 (火) 13:39:00 JST


ひがです。

トランザクションと連動していれば、自動でautocommitはoffになるはずなので、
まずは、トランザクションの設定を見直してみてください。
________________________________
差出人: seasar-user-bounces @ ml.seasar.org [seasar-user-bounces @ ml.seasar.org] が次の人の代理で送信しました: saraki @ pacific-systems.co.jp [saraki @ pacific-systems.co.jp]
送信日時: 2012年11月6日 11:45
宛先: seasar-user @ ml.seasar.org
件名: [Seasar-user:21491] jdbc.diconにおけるPostgreSQLのautoCommit設定について


はじめまして。荒木と申します。

PostgreSQL + S2Dao + Teedaの開発をしています。

動作環境
jdk1.6.0_34
tomcat-6.0.35
eclipse3.4.2
Teeda 1.0.12
S2Dao 1.0.47
PostgreSQL 9.1.5

jdbc.diconで以下の通りautoCommitを無効にしているのですが、update文などが実行されても自動的にコミットされてしまいます。

        <component name="xaDataSource"
                class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
                <property name="driverClassName">
                        "org.postgresql.Driver"
                </property>
                <property name="URL">
                        "jdbc:postgresql://PORTAL_IFRS_IT_DB/test"
                </property>
                <property name="user">"test"</property>
                <property name="password">"test"</property>
                <initMethod name="addProperty">
                        <arg>"autoCommit"</arg>
                        <arg>"false"</arg>
                </initMethod>
        </component>

jdbc.diconでautoCommitを無効にするにはどうしたらよいのでしょうか。

なお、S2Dao+jdbc.diconではなく、以下の通りsetAutoCommitメソッドを明示的に記述するとautoCommitが無効になりました。

        try {
            // JDBCドライバの登録
            String driver = "org.postgresql.Driver";
            // データベースの指定
            String url = "jdbc:postgresql://PORTAL_IFRS_IT_DB/test";
            String user     = "test";         //データベース作成ユーザ名
            String password = "test";     //データベース作成ユーザパスワード
            Class.forName (driver);
            // データベースとの接続
            Connection con = DriverManager.getConnection(url, user, password);
            con.setAutoCommit (false);
            Statement stmt = con.createStatement ();
            String sql = "UPDATE m_kanri_kengen SET update_dt = now() WHERE kanri_kengen_cd = 'G110'";
            stmt.executeUpdate(sql);
            stmt.close();
            con.close();
        } catch (SQLException e) {
            System.err.println("SQL failed.");
            e.printStackTrace ();
        } catch (ClassNotFoundException ex) {
            ex.printStackTrace ();
        }

以上、宜しくお願い致します。
-------------- next part --------------
HTMLの添付ファイルを保管しました...
URL: <http://ml.seasar.org/archives/seasar-user/attachments/20121106/4aee0a4f/attachment.html>


Seasar-user メーリングリストの案内