java里,怎么写事务控制

2024-11-28 12:25:15
推荐回答(4个)
回答1:

Java中为了控制事务的一致性,会使用插入回滚点、callback方法,保证数据不被篡改,示例如下:
public String delete(String id) {
String ID = id;
 db = new getConnection();
 Connection con = db.getConnection();
 try {
con.setAutoCommit(false);
db.executeUpdate("delete from helloworld where ID=" + ID); //更新操作1
  db.executeUpdate("delete from helloworld _book where ID=" + ID); //更新操作2
  db.executeUpdate("delete from helloworld_user where ID=" + ID); //更新操作3
  con.commit();//提交JDBC事务
  con.setAutoCommit(true);
db.close();
return “success”;
 }
 catch (Exception e) {
  con.rollBack();//回滚JDBC事务
  e.printStackTrace();
db.close();
return “fail”;
  }
}

回答2:

简单的~在连接了数据库之后,将自动commit的参数改为false,conn.setAutoCommit( false );
并在执行了sql语句之后调用conn.commit();
就可以了

回答3:

lz可能想在上传,修改,删除文件时,同时操作数据库记录吧?
更正一下,只有对数据库的一组操作才叫事物,操作文件是业务逻辑,不能写在一起。你可以先完成对文件的操作,再根据文件的操作情况(操作成功与否)操作数据库,一个在业务层,一个在持久层。

回答4:

对文件操作的事物控制?

那就得从新写了~

其实就是写个指令的缓冲

比如Hibernate的Session,就是把SQL语句(或者HQL)先存起来,然后commit的时候再一次执行(当然其中没那么简单,也使用了cglib来同步实体对象)

你写的话,其实也是写个缓冲而且,调用的方法表面是
delete()(这个方法需要你自己实现的,而不是File类的delete())
其实内部只是记下个指令而已

这仅仅是思路,具体还要看你的