欢迎来到天天文库
浏览记录
ID:56721289
大小:227.50 KB
页数:34页
时间:2020-07-06
《ssh中service层与dao层解耦的问题.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、11111当前应用dao层使用了hibernate,但是为了使应用与hibernate解耦,在dao层使用一个接口,此接口中提供了get、save、update、delete、list、query等的方法,service层使用该接口提供的方法而无需知道dao层使用的具体框架。现在有个问题,如果是较复杂查询,hibernate提供了hql或者Restrictions、Criteria之类的类来实现查询,但是我希望service层或action层不去使用hibernate的东西,如何设计封闭这个条件比较好?回答针对接口编程,而不是实现就好了。DAO
2、接口存在的目的就是这个,Service层只向DAO依赖(这个是必须的),表现层只向Service层依赖,不能跨层依赖,这样不符合分层的设计。因此,只有Service层对DAO的依赖,而且依赖的是接口,Service层自然不必知道DAO的实现到底是用Hibernate还是JPA或JDBC了,这已经达到了解耦的目的。myali88(架构师)2010-05-20代码是人写的,如果程序员非要在service层写hibernate的东西,你是没办法控制的。分层只是个规范,程序员只有遵守这个规范,才解耦了。(中级程序员)2010-05-20在设计的时候hi
3、bernate的hql或者Restrictions、Criteria之类的类就不要出现在方法参数里,多采用泛型机制。可以看下appfuse的源代码看它是怎么设计的。cwx714(架构师)2010-05-20我比较同意的说法,我们现在使用的就是appfuse,就是有人非要把相关的东西写到service层里,很无奈,还有更可气的是,hibernate不用,非要放个ibatis进去使。重要的还是遵守规范,和代码的审查。说句很扯的话,时不时的换下数据库(例如oracle改成mysql),时不时的改下框架(hibernate改ibatis)没准让他们吃点
4、苦头就好了。以上属于扯淡的话,别拍我~~~~~。sheep3600(高级程序员)2010-05-201楼的说的不错,zhou(初级程序员)2010-05-20myali88说的很正确,针对接口编程。使用spring将daoimplement注入进service里。如果程序员缺乏分层和面向接口编程的概念,可以让有经验的带一带;如果是有意不遵循规,就让他滚蛋。summerfeel(初级程序员)2010-05-21nodao一个service一个adapter业务serviceextendsbaseServicerrsy23(初级程序员)2010-0
5、5-21多使用泛型将hibernate的操作全都放到daoImpl里面去,不用扯到service层的比如在dao层返回一个List给service就操作就OK了Java代码1./** 2. * WjMax Corporation copy right 2010 - 2010 3. * 4. * $Header: /cvsroot/idc/wj/java/com/wj/common/utils/WjCriteria.java,v 1.5 2010/04/16 09:14:20 elan Exp $ 5. * $Id: WjCriteria.ja
6、va,v 1.5 2010/04/16 09:14:20 elan Exp $ 6. * $Author: elan $ 7. * $Date: 2010/04/16 09:14:20 $ 8. * $Revision: 1.5 $ 9. */ 10.package com.wj.common.utils; 11. 12./** 13. * 标准条件查询 14. * 15. * 16. * @author elan Email:@qq.com 17. */ 18.public interface WjCriteria { 19.
7、 20. /** 21. * 添加条件 22. * 23. * @param criterion 24. * @return 25. */ 26. public WjCriteria add(Object criterion); 1. 2. /** 3. * 排序 4. * 5. * @param wjOrder 6. * @return 7. */ 8. public WjCriteria addOrder(WjOrder wj
8、Order); 9. 10. /** 11. * 创建一个关联别名 12. * 13. * @param asso
此文档下载收益归作者所有