V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
dengji85
V2EX  ›  程序员

请问一下看到别人的代码,在有事务的情况下在 finally 记录操作(记录是指业务数据的变更历史) 是不是多此一举啊,还是有其它考虑?

  •  1
     
  •   dengji85 · 2020-07-24 14:08:29 +08:00 · 1659 次点击
    这是一个创建于 1575 天前的主题,其中的信息可能已经有所发展或是发生改变。
    //事务的情况下
    public void update() {
    	try{
        //数据库操作
        }catch(e){
        
        }finall{
        	//数据库存储数据变更记录
        }
    
    }
    
    11 条回复    2020-07-25 16:37:11 +08:00
    Varobjs
        1
    Varobjs  
       2020-07-24 14:35:07 +08:00
    瞎写,finally 应该只做关闭连接、清除资源等工作
    npe
        2
    npe  
       2020-07-24 14:42:28 +08:00
    transaction 失败了怎么办
    zsdroid
        3
    zsdroid  
       2020-07-24 14:47:49 +08:00
    业务就是要操作记录啊。
    dengji85
        4
    dengji85  
    OP
       2020-07-24 15:38:23 +08:00
    @npe 这是业务的变更历史,不是操作记录,事务失败业务数据没有变更,自然没有变更记录
    hun2008hun
        5
    hun2008hun  
       2020-07-24 15:51:50 +08:00
    catch 怎么操作的,不 throw 的话事务没效果呀
    zarte
        6
    zarte  
       2020-07-24 16:25:54 +08:00
    操作记录而已,某某人做了啥,一般来说都是成功的。用来追究责任。
    dengji85
        7
    dengji85  
    OP
       2020-07-24 17:50:14 +08:00
    @hun2008hun 有抛 runtimeexception
    xizismile
        8
    xizismile  
       2020-07-24 18:02:27 +08:00 via Android
    一般重要数据都要有变更记录的,记录了谁什么时间点操作了数据,便于审计和追责

    这种一般用 aop 来实现更好一些
    dengji85
        9
    dengji85  
    OP
       2020-07-25 09:05:38 +08:00
    @xizismile 我是想不通已有事务控制了,数据更改成功操作记录一定会保存下来,如果抛异常事务回滚,也没必要 finally 去处理
    xizismile
        10
    xizismile  
       2020-07-25 10:28:17 +08:00 via Android
    @dengji85 数据库中的数据,你只能看到一个稳定的状态。现在需要的是看到这条数据连续变化的状态,知道是谁改了这条数据,便于追责。和这条数据用不用事务没有半毛钱关系,这个你能明白吗
    abersheeran
        11
    abersheeran  
       2020-07-25 16:37:11 +08:00
    我觉得有点蠢。记录代码应该放 try 里啊。try 里有事务,一旦报错直接回滚,就没必要记录了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2752 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 79ms · UTC 05:34 · PVG 13:34 · LAX 21:34 · JFK 00:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.