看板 java 關於我們 聯絡資訊
噗 謝謝解說= = 我的理解是這樣 有問題糾正我一下 謝謝= = 一個dao介面抽象出所有資料表裡面可能操作的方法 再一個實作dao介面的類別實作出 然後再寫一個user類別封裝該資料表 user表 接著把使用者的參數放該user類別 然後呼叫 實作dao介面方法插user類別 之後從user裡面拿出參數帶入sql語句 從上面看來我只感覺的出來的好處 就是不用在jsp裡面打sql代碼 然後因為有了dao介面 換資料庫只要修改實作dao的方法 好處就以上二點是嗎?? 上面我全都用推的 推dao在做的是什麼 然後怎麼分離而己 其實我不確定是不是這樣做 ※ 引述《adrianshum (Alien)》之銘言: : ※ 引述《etman395 (技術時代)》之銘言: : : 我實在很不了解dao模式 : : 我只知道他的作用好像是不要在jsp裡面寫sql代碼 : : 把他分離出來 : : 這樣jsp就會省掉很多重覆的sql代碼 : : 然後為了換資料庫不會影響前台代碼 : : 所以做個 dao介面 和實作dao的類別 然後再寫個封裝資料表的類別 : : 上面這段我理解的很模糊 : : 其實我dao還是沒有懂.... : : 可以有高手幫我解釋一下嗎?? : : 用白話解釋也可以 : : 因為我也很想解整個構架是怎樣 和實際功能 : DAO 簡而言之, 就是我寫的logic 不用再管 : CRUD 的部份, 把 CRUD 交給一個 DAO. 某程度 : 上, 我的 logic 就不再需要理會背後用什麼 : persistence technology, 以後想比如換用別的 : DB, 只要換別的 DAO Impl 就好了. 感覺上就像: : (Logic): 好, 建好一部車的資料了, DAO, 幫我 : 存好它: : (DAO): 哦 (然後自己默默用 SQL 插入 DB) : 或者 : (Logic): DAO, 幫我拿出所有紅色的車子 : (DAO): 哦 (然後自己默默用 SQL 找出 record, : 把 record 轉為車子) : 諾, 你要的車子 : (Logic): 好! (然後繼續工作) : interface CarDao { : void createCar(Car car); : List<Car> findCarsByColor(Color color); : } : class CarDaoOracleImpl implements CarDao { : // Oracle 的 sql 實作 : } : class CarDaoMySqlImpl implements CarDao { : // My SQL 的 sql 實作 : } : 概念就這樣 : 最重要是 DAO 要把背後 persistence 的 techonlogy : 隱藏起來, 比如看過有些人寫 DAO, return 的是 : resultset, 又或者傳進一句 SQL 來做 query, : 這些就是換湯不換藥的做法, 對架構一點幫助都沒有. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 120.106.19.33
PsMonkey:未必要提煉出 dao 介面啦... 個人認為 dao 只是一種概念 05/26 16:29
silver8250:系統夠大才需要DAO 否則只是讓程式更複雜罷了! 05/26 16:35
adrianshum:最重要是把程式各layer負責的部份清楚分開 05/26 16:42
PsMonkey:(接樓上) 所以跟系統大不大沒有關係.... 05/26 19:07
PsMonkey:也不會因此變複雜,理論上是變簡單且直覺 05/26 19:07
jej:其實就真的只是把db的部份分離出來而已..如果系統很小... 05/26 19:31
jej:邏輯的部份就看看要怎麼寫摟~~ 05/26 19:33
bala045:讓程式變得簡潔,不過這樣寫有沒有比較簡單就不知道了 05/27 01:41
adrianshum:同意PsMonkey,除非你的程式是又小以後又不會再改 05/27 10:45
adrianshum:但我們學習,不是為了要寫以後能 maintain 的程式嗎? 05/27 10:48