2008年6月18日 星期三

DTO DAO 物件

[轉載]http://www.javaworld.com.tw/jute/post/view?bid=44&id=85388&tpg=1&ppg=1&sty=3&age=0
DTO:Data Transfer Object
DAO:Data Access Object

由名稱來猜,DTO 就是類似用來作資料傳輸的 Java 類別,個人看過的寫法是寫成有 getter/setter 的 JavaBean
透過 DTO 可以很方便地將資料跨 tier 傳遞,且完整封裝

比如:

Servlet 產生 DTO 物件,將 Client 端輸入的資料透過 setter 寫進 DTO,呼叫企業邏輯處理元件時將 DTO 物件當成參數向後端傳遞

而後端的企業邏輯處理元件就可以透過 DTO 的 getter 取出所需要的資料,並進行運算
若後端運算完畢之後必須要將處理結果傳回 Client 端,也是透過 DTO 的 setter 設定新的值,並回傳給 Servlet

這整個過程當中都只需要 DTO 物件一個參數,像坐捷運一樣從前端一路傳到後端
不需要串一堆參數傳來傳去的,若後端須新增參數時也只需要更改 DTO 及用到相關 getter/setter 的程式碼即可,大部分程式都不需要變動


至於 DAO,是跟資料庫存取有關的類別
我看過的做法是將所有操作資料庫的動作都萃取集中起來寫成特定的公用類別
程式中若需要存取資料庫時一律透過 DAO 處理

這樣的好處是,當資料庫更換時,僅需抽換 DAO 即可,其他程式可以繼續使用,可以將應用程式與資料庫的耦合度降低

沒有留言: