//事务的情况下
public void update() {
try{
//数据库操作
}catch(e){
}finall{
//数据库存储数据变更记录
}
}
1
Varobjs 2020-07-24 14:35:07 +08:00
瞎写,finally 应该只做关闭连接、清除资源等工作
|
2
npe 2020-07-24 14:42:28 +08:00
transaction 失败了怎么办
|
3
zsdroid 2020-07-24 14:47:49 +08:00
业务就是要操作记录啊。
|
5
hun2008hun 2020-07-24 15:51:50 +08:00
catch 怎么操作的,不 throw 的话事务没效果呀
|
6
zarte 2020-07-24 16:25:54 +08:00
操作记录而已,某某人做了啥,一般来说都是成功的。用来追究责任。
|
7
dengji85 OP @hun2008hun 有抛 runtimeexception
|
8
xizismile 2020-07-24 18:02:27 +08:00 via Android
一般重要数据都要有变更记录的,记录了谁什么时间点操作了数据,便于审计和追责
这种一般用 aop 来实现更好一些 |
9
dengji85 OP @xizismile 我是想不通已有事务控制了,数据更改成功操作记录一定会保存下来,如果抛异常事务回滚,也没必要 finally 去处理
|
10
xizismile 2020-07-25 10:28:17 +08:00 via Android
@dengji85 数据库中的数据,你只能看到一个稳定的状态。现在需要的是看到这条数据连续变化的状态,知道是谁改了这条数据,便于追责。和这条数据用不用事务没有半毛钱关系,这个你能明白吗
|
11
abersheeran 2020-07-25 16:37:11 +08:00
我觉得有点蠢。记录代码应该放 try 里啊。try 里有事务,一旦报错直接回滚,就没必要记录了。
|