当涉及到多张表的操作时。记得,要保持操作的原子性。如果其中一个环节出错,要回滚。这也是实际操作要注意的,不能以为操作一定会成功。
示例代码,使用boolean变量来表示操作是否需要回滚。
各人感觉还行吧,因为都在一次的连接里完成,而不是多次连接,这样又耗费时间。
当然,这样一个函数里完成太多的操作,是不是不好,又另说了...
==================================华丽地,出现了分割线=================================
public TestDao extends BasicDao()
{
//判断是否要回滚,开始时不用
boolean isCompleted = true;
try(
conn ........
........
........
pstmt.execute();
//一个操作执行完毕了,所以置为false。如果出错,这个pstmt也没有影响,跳到catch里,不用回滚
isCompleted = false;
conn.....
.........
.........
pstmt.execute();
//假设为两个操作,都执行完毕,显然也不用回滚
isCompleted = true;
} catch (Exception e) {
if(!isCompleted) {
//不完整,需要回滚操作
} else {
//完整了
}
....
} finnally {
//这这里释放连接资源,有可能会出exception,所以在finally里,保证实现
}
}