作者adrianshum (Alien)
看板java
标题Re: [问题] DAO 模式
时间Tue May 26 15:39:45 2009
※ 引述《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
1F:推 PsMonkey:传一个 sql 作 query,强者!! 05/26 16:01
2F:推 silver8250:推一个 这对话很生动~ 05/26 16:18