說說 Spring DAO 的設計思想
DAO (Data Access Object )是訪問資料的物件,它不但遮蔽了不同的資料儲存介質(資料庫、檔案或 LDAP/">LDAP 等),也遮蔽了具體的實現技術 。
我們只要為資料訪問定義好 DAO 介面,然後使用具體技術來實現 DAO 介面,就可以平滑地切換這些不同的實現技術啦O(∩_∩)O~
業務層通過 DAO 介面來訪問資料,這樣就實現了業務層與 DAO 層具體持久化技術之間的解耦,比如下圖中的 RoleService 通過 RoleDao 介面來訪問角色資料物件:

抽象出 DAO 層有這些優點:
- 可以很容易構造出模擬物件,方便開展單元測試。
- 有兩種切面技術可以選擇,即可以使用 JDK 動態代理,又可以使用 CGLib 動態代理。
- 最關鍵的是實現了業務層與 DAO 層具體持久化技術之間的解耦。