然后通過這些實現類進行數據庫訪問操作。如在OrderService下:
其中還值得注意的是,在各個實現類中ItemSqlMapDao并不包含對事務的處理,所有對于事務的處理都是在業務邏輯層調用。這樣做的好處在于所有Dao的操作都是原子操作,方便進行各種業務邏輯的組裝。(以前,我設計時候,這個地方沒有設計好)第二、事務處理的研究此處涉及到了事務的處理,來分析一下事務處理的過程。首先看一個事務處理的時序圖
從這張時序圖可以看到事務的處理是由代理類DataProxy完成的,查看DataProxy的代碼
根據這段代碼應該很清楚的知道Dao框架采用AOP模式,截獲所調用的方法,并檢查事務處理是否已經顯式的開始執行,如果沒有,它將調用事務管理器中的startTransaction()創建一個新的事務處理調用,然后執行被截獲的方法,然后commitTransaction。如果有,則直接執行所調用的方法。所以,在此Dao框架下,所有沒有顯式的通過startTransaction調用事務的方法,都是一個獨立的事務。如果要想在一個事務中完成幾次調用,必須自己通過DaoMangaer手動處理事務。至此,ibatis的JpetshopStore的持久層運行機制以及ibatis的Dao框架事務處理研究完畢。