Search code examples
javapostgresqltransactionsprepared-statementcommit

Postgresql transaction handling with java


I have two blocks of queries with preparedStatement.

This is the first:

String sql = "update cikan_malzeme set miktar = ? where proje_id = ? and malzeme_id = ?";
PreparedStatement prep = dbConnect.connection.prepareStatement(sql);
prep.setFloat(1, toplam);
prep.setInt(2, pid);
prep.setInt(3, mid);
prep.executeUpdate();

And this is the second:

String sql2 = "update malzemeler set miktar = ? where malz_adi = ?";
PreparedStatement prep2 = dbConnect.connection.prepareStatement(sql2);
prep2.setFloat(1, fark);
prep2.setString(2, malzemeadi);
prep2.executeUpdate();

Now I want to execute them with the transaction BEGIN; and COMMIT; How can I handle transaction with preparedStatement?


Solution

  • Set auto commit to false.

    Put your PreparedStatements in a try block. Commit at the end; rollback in the catch block.

    That's how it's usually done in bare bones JDBC.

    http://docs.oracle.com/javase/tutorial/jdbc/basics/transactions.html

    If you use EJB3 or Spring you can add a transaction manager and specify them declaratively. That's more sophisticated and flexible.