我是否需要将所有数据库访问权限写为此事务?

时间:2011-11-08 09:33:02

标签: java transactions

为确保安全,我是否需要编写所有数据库访问代码,如下所示:


public void updateOrder(OrderData order) throw Exception {
            ....
            coon.setAutoCommit(false);
            Statement stmt = conn.createStatement();
            String sql = "update order set .... where ";
            try {
                 stmt.executeUpdate(sql);
                 conn.commit();
            } catch (Exception e) {
                 conn.rollback();
            } finally {

}

}

在这个例子中,我只能访问一个表,我还需要将其视为事务吗?我是否需要将所有数据库访问权限写为此事务?

2 个答案:

答案 0 :(得分:0)

这取决于是否有多个sql更新和插入。如果您正在执行单个更新或插入,它将隐式在事务中运行。

答案 1 :(得分:0)

在autoCommit中,数据库(或JDBC驱动程序)将启动并为单独执行的语句提交事务。 因此,如果这是唯一要执行的语句,那么您不需要将autoCommit设置为false,也不需要自己处理提交或回滚。

另一方面,如果你想执行多个应该原子提交或回滚的语句,那么你需要禁用自动提交。