关于MVC结构中的action,service,dao,domain的解释

转载 2015年07月09日 10:04:28
service是业务层,dao是数据访问层。简单的说DAO层是跟数据库打交道的,service层是处理一些业务流程的
表示层调用控制层,控制层调用业务层,业务层调用数据访问层。
举个最简单的例子,你做一个分页的功能,数据1000条,你20条在一个页,你可以把这个功能写成工具类封装起来,然后在业务层里调用这个封装的方法,这才是业务里真正干得事,只要没访问数据库的,都要在业务里写。 
比说你现在用的是SSH框架,做一个用户模块:
1、假设现在你做这个功能会用到user表和权限表,那么你前台的页面访问action,action再去调用用户模块service,用户模块service判断你是操作user表还是权限表,如果你操作的是user表则service的实现类就去调用userDAO。如果是操作的是权限表则调用权限的DAO
2、也就是说DAO一定是和数据库的每张表一一对应,而service则不是。其实你一个项目一个service和一个DAO其实也一样可以操作数据库,只不过那要是表非常多,出问题了,那找起来多麻烦,而且太乱了
3、好处就是你的整个项目非常系统化,和数据库的表能一致,而且功能模块化,这样以后维护或者改错比较容易,性能也高一些
为什么要用service层封装

我认为:一般来说,某一个程序的有些业务流程需要连接数据库,有些不需要与数据库打交道而直接是一些业务处理,这样就需要我们整合起来到service中去,这样可以起到一个更好的开发与维护的作用,同时也是MVC设计模式中model层功能的体现


初级DAO模式:
例如::写一个类 操作1张表 针对这张表的所有操作都以方法的形式写在这个类中 1个操作对应1个方法要求是外部通过调用这个类的方法达到操作某张表的目的时不需要写任何和数据库以及JDBC相关的代码,这个类的命名就是XXDAO。比如表叫做 t_goods 商品表那么操作它的DAO就叫GoodsDAO

高级DAO模式:
例如:即DAO工厂模式,多个XXDAO实现同一个接口或者继承同一个基类,编写一个工厂类通过工厂模式(简单工厂模式或利用反射动态加载均可)获得接口或基类对象,内部实际上封装返回的是具体的XXDAO类的对象。简单的说即是在1的基础上将创建具体的XXDAO对象的方式由new变为工厂模式实现
例如:UserDAO dao = DAOFactory.create(...);
dao.save() 
dao.delete....
1.有一个dao接口,里面有平时的增删查该的方法
2.有一个具体的实体类
3.有一个dao的实现类,有对实体操作的方法,继承1的接口
4.如果有需要,还可以有一个工厂类,负责生产dao实现类
DAO层一般有接口和该接口的实现类! 接口用于规范实现类! 实现类一般用于用于操作数据库! 一般操作修改,添加,删除数据库操作的步骤很相似,就写了一个公共类DAO类 ,修改,添加,删除数据库操作时 直接调用公共类DAO类!

com.公司名.系统名.模块名 

代码目录结构
Action : 负责页面逻辑,将调用service的结果返回到页面中
Service : 接口定义
---impl 接口的实现,负责业务逻辑
Domain 对应数据库表的pojo
Dao : 只负责连接数据库,从数据库中查询结果,包装成对象后返回
util :工具类

DAO层、ENTITY层、SERVICE层、CONTROLLER层个人的理解分析

DAO层、ENTITY层、SERVICE层、CONTROLLER层 1、DAO层: 持久层  主要与数据库进行交互    DAO层主要是做数据持久层的工作,主要与数据库进行交互。DAO层首先会...
  • Warpar
  • Warpar
  • 2017年03月28日 16:33
  • 6470

关于在Struts2的Action中使用domain模型接收参数的问题

最近在搭建一个最新的ssh2框架,今天在调试的时候,发现了一个以前一直没有注意过的问题,我在Action中使用域模型的方式去接收jsp画面中的参数的时候,发现参数总是接收不完,头一次遇到这种问题,现在...
  • IT_LOSER
  • IT_LOSER
  • 2016年05月05日 15:02
  • 386

关于对dao、domain的思路(一)

需求:从数据库中获取数据。 一、创建项目,并在项目中新建dao包、domain包、impl包、test包。加入JUnit4。新建文件夹webapp、WEB-INF、lib、classes,以及web...
  • qq_38685141
  • qq_38685141
  • 2017年08月24日 18:03
  • 182

dao、domain、service、web 分别是java里面的什么概念

MVC结构: web主要是客户端网页,是表层的东西,可接收和返回数据给用户 domain主控制层,是用户与数据库交互的核心中转站,控制用户数据收集,控制请求转向 service是业务逻辑层,处理...
  • u011008029
  • u011008029
  • 2015年11月19日 15:10
  • 732

JAVA中Action层, Service层 ,modle层 和 Dao层的功能区分

首先这是现在最基本的分层方式,结合了SSH架构。modle层就是对应的数据库表的实体类。Dao层是使用了Hibernate连接数据库、操作数据库(增删改查)。Service层:引用对应的Dao数据库操...
  • limuzi13
  • limuzi13
  • 2015年04月10日 00:47
  • 49257

Java三层架构、MVC、Dao_Service_Action

Java三层架构 MVC基本概念 Dao_Service_Action等包的作用
  • yhj19920417
  • yhj19920417
  • 2015年05月25日 15:52
  • 2885

MVC中的service层是干嘛的?

概述mvc框架由model,view,controller组成,执行流程一般是:在controller访问model获取数据,通过view渲染页面。mvc模式是web开发中的基础模式,采用的是分层设计...
  • Time888
  • Time888
  • 2017年05月30日 21:32
  • 2013

MVC+DAO设计模式下的设计流程

这里总结一下MVC+DAO的设计流程。通过MVC+DAO的设计模式,可以使项目在设计过程中结构更为明晰,并且能够方便的进行修改。MVC是一个分层模型,即模型、视图、控制器。DAO是一个数据库访问模型,...
  • tao_sun
  • tao_sun
  • 2014年02月12日 17:55
  • 3142

mvc dao层、service层 到底怎么写?

首先解释面上意思,service是业务层,dao是数据访问层。 呵呵,这个问题我曾经也有过,记得以前刚学编程的时候,都是在service里直接调用dao,service里面就new一个dao类对象,调...
  • shaoduo
  • shaoduo
  • 2016年02月18日 09:22
  • 8058

mvc dao层、service层 到底怎么写?

转自:http://blog.sina.com.cn/s/blog_4adc4b090101kvek.html 首先解释面上意思,service是业务层,dao是数据访问层。 呵呵,这个问题我...
  • thewindkee
  • thewindkee
  • 2016年04月02日 12:48
  • 2551
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于MVC结构中的action,service,dao,domain的解释
举报原因:
原因补充:

(最多只允许输入30个字)