1. 程式人生 > >4.為什麼SqlSession會是不安全的以及轉賬事務為什麼要放在持久層?

4.為什麼SqlSession會是不安全的以及轉賬事務為什麼要放在持久層?

  1. 為什麼jdbc 的template必須從業務層一直傳到持久層?因為事務要在業務層。

怎麼提交事務?connnection的conmmit方法。

為什麼事務層要放在業務層控制?看下圖:

如果放在持久層的話,每一個connection完成之後,都會完成一個提交自己的connection的獨立的事務。那麼每個提交的connection沒有聯絡了,轉賬過程中也會出現問題,也無法解決,無法回滾。所以需要不能允許類似上圖中的多個connection,所以需要放在業務層控制一個connection,轉賬的過程中出現問題,那麼整個事務將會回滾。

這個也表示了為什麼SqlSession為什麼是不安全的

解決辦法

1.執行緒ThreadLock解決,就是一個執行緒操作多個物件

這也是每個物件為什麼只有一個操作資料庫的物件?