浏览 3643 次
锁定老帖子 主题:查询方法接口设计的几种方式
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-09-18
1. 每个条件项对应一个入参 List find(String hql,Date startTime,int personId); 优点:方法签名可读性强; 扩展:要么改接口签名,要么增加参数构造重载方法,扩展性差; 基本背离了面向接口编程的初衷,除非你很确定参数不被改变,否则少用为佳。
2.使用数组传递条件项参数 List find(String hql, Object[] params); 优点:能保持接口稳定性 缺点:方法可读性不强,JavaDoc要写清楚啊。 用的最多的方法签名方式,Spring的HibernateTemplate就提供这样的方法。
3.使用不定参数 List find(String hql,Object ...params); 用起来和2没区别。
4.将查询条件封装成对象 List find(String hql , QueryParamObjec param); 没事干还要去维护这么一个DTO,而且变更时还是要去维护那个DTO的,除非追求类数目,否则不要这么...
5.使用Map传递条件参数 List find(String hql , Map params); 优点:参数变化时保持签名的稳定; 缺点:方法可读性不强,依旧要写好注释; 这个签名在条件查询时用得很多,直接request.getParameterMap()得到Map,然后往下层丢就好了。
感觉2和5用的很广泛,看来面向接口的原则很重要滴呀。
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-09-18
2和5固然会用的最多,因为具有普遍性,但看不出跟面向接口编程有什么关系啊。
另外, List find(String hql,Object ...params) 跟 List find(String hql, Object[] params); 还是有点区别, 如果只有一个参数, 前者不需要用数组,因此我觉得还方便点,但需要jd5才能支持。 |
|
返回顶楼 | |
发表时间:2008-09-18
呵呵,我觉得保证接口的稳定性在接口设计时是很重要的,这也算面向接口的一方面吧
|
|
返回顶楼 | |
发表时间:2008-09-18
miracle9i 写道
1. 每个条件项对应一个入参 List find(String hql,Date startTime,int personId); 优点:方法签名可读性强; 扩展:要么改接口签名,要么增加参数构造重载方法,扩展性差; 基本背离了面向接口编程的初衷,除非你很确定参数不被改变,否则少用为佳。
如果接口的意义都变化了,仍然保留原来的接口会有很多隐患吧。 这种方式的优点,除了可读性强外,还有编译检查。
如果是对外部团队的接口,尽量还是不要变吧。如果是对团队内部的,接口发生变化的时候,能快速定位到需要变化的地方并更正,有时比不变接口而只改变接口的意义更好吧。 |
|
返回顶楼 | |
发表时间:2008-09-18
public List findByParamAndPage(HashMap params,Class c,String order,boolean asc,int first,int max); 俺的dao通用接口 |
|
返回顶楼 | |