欢迎来到天天文库
浏览记录
ID:47204471
大小:114.40 KB
页数:35页
时间:2019-08-26
《ssh中service层与dao层解耦的问题》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、mu当前应用dao层使用了hibernate,但是为了使应用与hibernate解耦,在dao层使用一个接口,此接口屮提供了get>save>updatexdeletexlist>query等的方法,service层使用该接口提供的方法而无需知道dao层使用的具体框架。现在有个问题,如果是较复杂查询,hibernate提供了hql或者Restrictions>CriteriaZ类的类來实现查询,但是我希望service层或action层不去使用hibernate的东四,如何设计封闭这个条件比较好?
2、回答针对接口编程,而不是实现就好了。DA0接口存在的目的就是这个,Service层只向DA0依赖(这个是必须的),表现层只向Service层依赖,不能跨层依赖,这样不符合分层的设计。因此,只flService层对DAO的依赖,而且依赖的是接口,Service层自然不必知道DA0的实现到底是用Hibernate还是JPA或JDBC了,这已经达到了解耦的目的。myali88(架构师)2010-05-20代码是人写的,如果程序员非要在service层写hibernate的东西,你是没办法控制的。分层只是
3、个规范,程序员只有遵守这个规范,才解耦了。2022228(中级程序员)2010-05-20在设计的时候hibernate的hql或者Restrictions、Criteria之类的类就不要出现在方法参数里,多采用泛型机制。可以看下appfuse的源代码看它是怎么设计的。cwx714(架构师)2010-05-20我比较同意2022228的说法,我们现在使用的就是appfuse,就是冇人非要把相关的东西写到service层里,很无奈,还有更可气的是,hibernate不用,非要放个ibatis进去使。
4、重要的还是遵守规范,和代码的审查。说句很扯的话,时不时的换下数据库(例如oracle改成mysql),时不时的改下框架(hibernate改ibatis)没准让他们吃点苦头就好了。以上屈于扯淡的话,别拍我osheep3600(高级程序员)2010-05-201楼的说的不错,zhou363667565(初级程序员)2010-05-20myali88说的很正确,针对接口编程。使用spring将daoimplement注入进service里。如果程序员缺乏分层和面向接11编程的概念,可以让有经验的带一带
5、;如果是有意不遵循规,就让他滚蛋。summerfeel(初级程序员)2010-05-21nodao—■个service-■个adapter业务serviceextendsbaseServicerrsy23(初级程序员)2010-05-21多使用泛型将hibernate的操作全都放到daolmpl里面去,不用扯到service层的比如在dao层返回一个List给service就操作就0K了Java代码吟1./**2.*WjMaxCorporationcopyright2010-20103.*4.*$
6、Header:/cvsroot/idc/wj/java/com/wj/common/utils/WjCriteria.java,v1.52010/04/1609:14:20elanExp$5.*$Id:WjCritcria.java,v1.52010/04/1609:14:20clanExp$6.*$Author:elan$7.*$Date:2010/04/1609:14:20$8.*$Revision:1.5$9.*/10.packagecom.wj.common.utils;11.11./**
7、12.*标准条件查询13.*14.*15.*@authorelanEmai1:272926206@qq.com16.*/17.publicinterfaceWjCriteria{19.18./**19.*添加条件20.*21.*@paramcriLerion22.*@return23.*/24.publicWjCriteriaadd(Objectcriterion);27./***排序**@paramwjOrder*@return*/publicWjCriteriaaddOrder(WjOrder
8、wjOrder);/***创建一个关联别名**©paramassociationPath*关联对彖导航*©paramalias*别名*@rcturn*/publicWjCriteriacreateAlias(StringassociationPath,Stringalias);/***创建一个关联Criteria**@paramassociationPath*关联对象导航*@rcturn*/publicWjCriteriacreateCriteria(Stringassociati
此文档下载收益归作者所有