日期:2014-05-20  浏览次数:20607 次

DAO接口设计问题
网上说在设计DAO层的时候都会先提出DAO的接口,那是每个DAO实现类对应一个接口类还是所有的DAO实现类对应一个接口类?如果DAO实现类有多种查询组合,比如有通过名称查询,有通过ID查询,还有多个条件的查询,查询的接口该如何设计?

------解决方案--------------------
把DAO当服务来设计,答案基本是一样的。

每个服务应该有一个接口,除非你打算用Facade模式。

通过名称查询?getXXOOByName() queryXXOOByName()
多条件查询? 参数直接传条件VO。
------解决方案--------------------
一般来说一个接口对应一个是实现。
至于组合条件查询,条件全部作为参数传入方法中,通过判断传入参数是否有值,来做相应的组合查询。
参数如果较多,则一般把参数组合成一个对象传入方法。
比如:
class QueryData{
String a;
String b;
}
List querySth(QueryData data){}
------解决方案--------------------
分两种情况 :
1.对于简单的增删改查,所有的DAO可以共用一个接口,把它抽象出来,
2.对于复杂的查询操作,单独为此建立接口同时继承共用接口,


作用:
1.减少重复的增删改查的代码量
2.为复杂的需求做个单独接口,可以适应复杂的查询要求,为未来的需求变化做相应的接口