看板 java 關於我們 聯絡資訊
※ 引述《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: 202.155.236.82
PsMonkey:傳一個 sql 作 query,強者!! 05/26 16:01
silver8250:推一個 這對話很生動~ 05/26 16:18