Transactional 失效問題 解決記錄

2022-09-21 22:21:15 字數 503 閱讀 8783

我們大家都知道,需要控制事務時,需要在服務層使用

@transactional(rollbackfor = exception.class)
來控制事務,保證方法內的的多個 dao操作同時成功或失敗

今天就遇到了問題, 方法內的資料庫操作未受到事務控制, debug時,方法沒走完資料就落庫了, 這顯然是不對的

問題原因是:

我在service層 直接呼叫本service類的重寫的方法, 沒有通過注入的方式呼叫 所以事務沒有生效,

修改方案,

1.通過注入自己service 後 通過示例呼叫(不建議)

2.新增service類 再注入此類後呼叫此方法

最後來一句  

**結構應該是 controller ->biz(處理邏輯,準備資料,呼叫service) ->service(提供服務,可加事務)->dao(運算元據庫,盡量單方法單sql)

上述問題因沒有 biz層 邏輯都寫在了 service,

Transactional 失效問題

transactional配置起來是簡單方便,但是坑也相當多,下面就記錄下這些坑。1 service類標籤新增在了介面上,查閱資料說介面的方法上可以加也不建議這樣用,但實際中這麼出現事務失效。2 transactional 註解只能應用到 public 可見度的方法上。3 預設情況下,spring會...

Transactional事物失效解決

這麼乙個類 public class foopublic void baz 可能會有不少人會跟我一樣,覺得上面這種方式呼叫 baz 方法時,bar 上的 transactional註解還是會起作用的,即bar 在被呼叫時,將會開啟事務。但是,當實際操作之後,你會發現,這樣並不會開啟新的事務?為什麼呢...

Transactional的失效場景

transactional我們在日常開發中經常用到,可能會經常遇到 transactional失效的情況。下面將從what where when三個方面講解 transactional。事務 transaction 是指我們做的一系列完整的事情,在事務中,任何一步出現了問題,這件事情就未算完成。這裡...