这样的问题,太多了。问banq老师有没有什么好的方案。

如果一个方法中包含三个操作步骤,A、B、C分别操作A表、B表、C表。三个步骤都需要在事务中进行。现在想把三个步骤分出来。我现行的作法是这样的
public void d {
Connection con =.....;
con.autoCommit(false);
a(con);
b(con);
c(con);
con.conmit();
}

a ( Connection con) {
}
.....

有没有其它好一点的方法啊。

可能会有人这样问。把a分出去的理由:
因为我的d中需要反复的调用a这个方法。所以必须要分出来。

为什么不把Connection声明为 成员变量

#、将Connection声明为成员变量,这样,在a();b();c();业务方法中就不用再将con作为参数传递

#、分离出a();,将a();的操作(操作A表)单独放在一个事务中,b();c();同理。
最后的结果就是:由多个a();b();c();事务合并成方法 void d(); 中的一个事务。a,b,c中的任何一个失败的操作都可以完全回滚事务或回滚到某个事务存储点(SavePoint)。

--个人愚见,欢迎板砖与炮火 :)

是,可以向楼上说的那样声明一个域变量:
private Connection con;

然后定义方法setCon(Connection con)

但是我在其它的类中调用b,c,d方法时,又需要先传入con。烦的。。。

dao设计不合理。

“A、B、C分别操作A表、B表、C表、”难道因为表不同就分成三步?

用一个里面包含事务处理的方法不行吗。还希望你写的再详细些。