数据访问对象的方法和参数

时间:2011-11-04 04:53:39

标签: design-patterns data-access-layer

对于数据访问对象,有哪些方法和参数?典型的DAO看起来像

DAO<T>
+ select(): List<T>
+ selectOne(id: int): T
+ insert(obj: T): boolean
+ update(obj: T): boolean
+ delete(obj: T): boolean

如果是这样,为什么不让我的实体/域对象继承此类?然后我不必将对象传入此类。目前,这个类似乎会包含很多类似的代码?我想我对DAO的理解是错误的吗?我对ORM更熟悉

1 个答案:

答案 0 :(得分:1)

事实上,典型的DAO与您描述的很相似,并且有些库可以帮助您避免创建仅在类型上有所不同的类似方法(如果使用ORM实现DAO,请查找 泛型的DAO )。

例如,像Spring-Data-JPA这样的框架让您专注于通过其他标准查询对象的不常见方法。

  

findByName(String:name):List

     

findByDay(日期:d1,日期d1):列表

将这些方法移动到实体对象是一种人们更喜欢的模式,但正是能够定义通用DAO并从中继承这一点的原因,将这些方法保留在不同的类中是理所当然的。

所以,我对你对DAO的理解不错。