DAO/service/Action分层的作用

软件开发的分层结构对软件的质量很重要,如果一个小的项目来说 Service层似乎用处不是很大,但如果到了一定大的程序了,那么这service 层进会体现出价值。你仔细看 dao 和service 层两个层,的引用 类你会发现,在dao中 会用很多的dateSource 数据库的一些类,什么JDBC包里面的类,但是到了service 里就基本上没有了,当你在Action中再调用service的时候,就完全没有了和数据库有关的任何类了,而如果你直接调用dao的话Action中就会存在大量的数据库类。这对软件设计的分层存在一定的弊端。并且在dao层中主要的是对数据库的增删改查操作,而在service层中还有一个更重要的就是,service是用于对数据逻辑的一些处理,比如你要在增加一条记录前必须先查看那条记录是否已经存在,就得再查一下数据库,那么这样的逻辑就必须得在service层中完成。总结:service是用于在处理数据的时候做一些逻辑的判断与处理。还提高了软件分层架构。不知我的回答是否让你满意呢,记得给好评哦。

DAO,Service,Action三者的含义

Action主要的功能就是组织service的,比如你要做权限验证,那么请求会被Action获取,那么如何验证呢?Action可不管他要问service该怎么办。当得到service返回的结果后根据结果判断下一跳是哪里(如果验证用户存在且密码正确则跳转到登录成功的页面,反之则回跳到登录页面)

现在轮到service了,ta是管理业务的,延续上面的例子的话,action问这个用户是否合法有效的时候sevice就去调用dao看看dao能不能找到相应的记录,当业务受到dao的结果后就根据得到的记录回答action的问题“用户是否合法有效”

最后就是dao喽,作为工作于最“基层”的部分,ta倔强的只去实现增删查改,甚至这些增删查改之间有什么关系?dao一概不问,爱谁是谁。dao很倔强,ta只保证和数据库的关系良好,

归纳一下,Action就是管理业务(servcie)调度和管理跳转的。service,ta是管理具体的功能的,这个很容易和Action混淆,你可以这样理解,Action只负责管理,而service负责实施,dao只完成增删查改,当然你可以1-n,n-n,1-1关联,模糊 、动态 、子查询都可以。但是无论多么复杂的dao,ta只是封装增删查改。至于增删查改如何实现一个功能,ta是不管的。
    总结这三者,可以举个例子,action像是服务员,顾客点什么菜,菜上给几号桌,都是ta的职责;sevice是厨师,action送来的菜单上的菜全是ta做的;dao是厨房的小工,和原材料打交道的事情全是ta管。所以小工(dao)的工作是要满足厨师(service)的要求,厨师要满足服务员(action)转达的客户(页面用户)的要求,服务员自然就是为客户服务喽。
本文是张老师给我解释的,张老师博客链接http://user.qzone.qq.com/953133372

时间: 2024-11-09 02:53:56

DAO/service/Action分层的作用的相关文章

DAO service action分别什么作用

首先这是现在最基本的分层方式,结合了SSH架构.modle层就是对应的数据库表的实体类.Dao层是使用了Hibernate连接数据库.操作数据库(增删改查).Service层:引用对应的Dao数据库操作,在这里可以编写自己需要的代码(比如简单的判断).Action层:引用对应的Service层,在这里结合Struts的配置文件,跳转到指定的页面,当然也能接受页面传递的请求数据,也可以做些计算处理.以上的Hibernate,Struts,都需要注入到Spring的配置文件中,Spring把这些联系

010商城项目:商品类目的选择——Dao,Service.Action层的分析

我们现在开始写商品类选择这个功能: 先看效果: 当我们点击"新增商品"---->"选择目录"然后从数据库中查出来数据并显示了. 我们分析数据库的那张表: 它是一个树形结构: 如下: 这是整个表的数据. 我们写一条sql查询语句: 查出来的是最顶层的目录. 我们再根据其中一条数据的id来查他的下面的目录: 比如查id=74的数据 查出来的就是家电数据. 我们在查大家电下面的数据: 所以整个表就是一课数. 我们看怎么实现: 页面上我们使用Easyui的tree结构

046医疗项目-模块四:采购单模块—采购单审核(Dao,Service,Action三层)

当医院把采购单提交之后,由监管单位进行采购单审核,由卫生院及卫生局进行审核.卫生局可以审核所有医院创建的采购单,卫生院只审核本辖区医院创建的采购单. 操作流程: 点击"采购单审核" 显示如下: 具体实施如下: Dao层: 分为两个: 查找cgd表中的数据以及数据的数量来实现分页. 我们查找cdg数据的SQL语句: select useryy.mc useryymc, yycgd.*, (select info from dictinfo where typecode = '010' a

047医疗项目-模块四:采购单模块—采购单审核提交(Dao,Service,Action三层)

我们之前把采购单都审核了,这篇文章说的就是审核之后提交. 其实就是改变(update)采购单的审核状态. 需求: 用户要先查看采购单的内容. 查看采购单页面:页面布局同采购单修改页面. 选择审核结果.填写 审核意见进行提交 . 约束条件: 采购单状态为审核中方可提交审核. 审核结果(审核通过.审核不通过)必须选择. 审核意见是否必填根据用户需求来定,本系统采用不必填 . 数据库操作: 更新采购单状态为审核通过或审核不通过. DAo层: 使用逆向工程生成的Mapper: yycgdMapper.u

048医疗项目-模块四:采购单模块—采购单受理(Dao,Service,Action三层)

需求: 我们之前把采购单交给监督单位审核了,审通过的采购单就要受理.供货商决定采购单发不发货. 如下: 这张单子里面的就是采购单详细表,这儿查出来的数据就只是特定于这个供货商的采购单详细表,一个区域里面只有一个供货商,有好几个医院,每个医院有好多个采购单.那么就是一个供货商有好几个采购单.供货商要看着每一个采购单的明细表才会去处理这个数据要不要发货. 我们先写Mapper: 我们写sql时要参考: Mapper.xml如下: <!-- 采购单药品明细查询列表 --> <select id

044医疗项目-模块四:采购单模块—采购单保存(Dao,Service,Action三层)

我们上上一篇文章(042医疗项目-模块四:采购单模块-采购单明细添加查询,并且把数据添加到数据库中)做的工作是把数据插入到了数据库,我们这篇文章做的是042医疗项目-模块四:采购单模块-采购单明细添加查询,并且把数据添加到数据库中这里没有写采购量,我们这篇文章做的就是把采购量写进入,也就是Updata之前的那个记录.这样采购单里面的记录就完整了. 如下: Dao层:用的是逆向工程生成的:yycgdmxMapper.updateByPrimaryKeySelective(yycgdmx_updat

关于@Repository、@Service、@Controller的作用?

@Repository和@Controller.@Service.@Component的作用差不多,都是把对象交给spring管理.@Repository用在持久层的接口上,这个注解是将接口的一个实现类交给spring管理. Spring 自 2.0 版本开始,陆续引入了一些注解用于简化 Spring 的开发.@Repository注解便属于最先引入的一批,它用于将数据访问层 (DAO 层 ) 的类标识为 Spring Bean.具体只需将该注解标注在 DAO类上即可.同时,为了让 Spring

java spring 简单封装出自己的DAO Service实现

package com.jade.basung.bss.module.common; import com.jade.framework.base.criterion.Criteria; import com.jade.framework.base.util.PagingList; import com.jade.basung.bss.BaseException; /** * dao层公共接口 * * @date 15/8/28 下午5:23 * @version 1.0 */ public i

Java Web Action DAO Service层次理解

参考来源:http://blog.csdn.net/inter_peng/article/details/41021727 1. Action/Service/DAO简介: Action是管理业务(Service)调度和管理跳转的. Service是管理具体的功能的. Action只负责管理,而Service负责实施. DAO只完成增删改查,虽然可以1-n,n-n,1-1关联,模糊.动态.子查询都可以.但是无论多么复杂的查询,dao只是封装增删改查.至于增删查改如何去实现一个功能,dao是不管的