`
watershitter
  • 浏览: 43593 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

DAO+service分层理解(论坛总结)

    博客分类:
  • DAO
阅读更多
    dao完成连接数据库修改删除添加等的实现细节,例如sql语句是怎么写的,怎么把对象放入数据库的。service层是面向功能的,一个个功能模块比如说银行登记并完成一次存款,UI要把请求给service层,然后service曾将这一个case分解成许多步骤调用底层的实现完成这次存款,dao就是下面那层。
     dao就是把数据存起来,之所以service的方法会有雷同只不过是因为service得需求不是很复杂不用再service里面完成太多包装或者处理过程可以直接调用dao的方法就完成的请求处理例如就要save一个对象,而这个对象是封装好的,dao里面有个方法专门save封装好的对象于是service的方法就仅仅调用一下就o了,函数签名自然很像了service不能直接接触持久层,而dao是持久层或者直接访问持久层有的时候只是为了分层清楚,为了将来scale up的时候方便我们才把service和dao分开,其实没必要分开的。

---------------------------------------------------------------
    根据不同项目的复杂度来确定是否需要分层,如果是小项目的话,2层应该就够了,分层是为了很好的解耦,和程序的可观性,还有就是很好的项目分工,如果遇到某个客户需要修改某个查询结果集合,你需要修改的首先是dao的SQL,接着是service的相应调用方法来为VIEW服务,
如果是分层清楚的话,只需要在DAO中加一个方法,在SERVICE中改变起调用的方法街口,需要改动的不大,

-----------------------------------------------------------------
     在用ssh进行开发中,一般情况下都是分为三层:web层spring层dao层,基本的流程是首先定义一个dao接口,然后去实现这个接口,在定义同类型的service接口(service接口与dao接口是完全一样),再实现service接口,(这是是用dao接口去注入),然后web层在去调用service层。
    DAO层的职责是纯粹的数据操作, 如果是hibernate, 那就只需要类似getHibernateTemplate().save, update, delete, findyBy*这类的方法而service层是负责写业务逻辑的, 纯粹的业务逻辑, 其中的数据操作是通过注入的DAO实现的, 但是业务是在这层。
    如果你的service层与dao层代码严重重复,这说明你的业务比较简单。复杂业务这个结构的优势就很明显了service层的作用是对dao取得的数据做操作 更贴近于业务的实现 dao只是数据的增删改查,对小型的应用来说,SSH 确实提高了开发成本和开发周期,但是却有利于扩展和维护。
    利用spring 的ioc 解偶 使业务逻辑与持久层松偶合。

-----------------------------------------------------------------
     分层并不一定是绝对的,具体的还是要根据项目实际情况来定,不是么?如果是理想状态的话,恐怕在你的service层上面还要再多加一层的。但是你觉得有必要吗?

    实际上,对于小项目来说,直接通过dao来进行操作也不是不可以,搞得太复杂,也没有必要。这是我的个人感觉。就好像po和dto一样,有的人直接就将po传到web层,有的还要加一个转换,由dto进行数据传递。显然后者实现更理想,但是你不觉得这样很麻烦吗。

    微软的。net号称有11层(还是多少层来着,反正层很多),但是实际能分出多少层,还是根据开发者自己情况来定了。要注意代码是死的,人是活的,不要死套框架,否则自己很可能也会陷入开发误区。

    另外,我们目前设计的一些领域对象,绝大多数都是贫血的。只是一个简单的javabean,不包含任何逻辑在里面。怎么设计才更符合oo的思想,你也可以参考下domain object方面的讨论。这个在javaeye上有很多。
分享到:
评论

相关推荐

    采用Java Servlet +Service+DAO实现用户登陆注册

    采用Service+Service+DAO实现用户注册登陆 数据库:SQLite 代码:JSP 目的要求 (1)掌握Servlet使用技术; (2)掌握开发平台的分层技术;...(1)Servlet+Service+DAO开发模式的理解; (2)DAO的封装。

    怎样区分Action, Service 和 Dao功能.

    在软件开发中,Action、Service和Dao都是常用的架构模式,但是很多开发者对这些概念的理解和使用却存在一定的混淆。因此,本文将对Action、Service和Dao的功能进行详细的区分和解释。 首先,让我们从Action开始。 ...

    .DAO分层思想

    DAO(Data Access Object)分层思想是软件设计模式中一种常用的数据访问模式,它主要用于将业务逻辑与数据访问逻辑分离,提升代码的可维护性和可扩展性。在C#编程中,DAO层扮演着关键角色,它使得应用程序可以与...

    action层,dao层 ,service层,entity层1

    标题和描述中提到的"action层,dao层,service层,entity层"是这种分层架构的典型组成部分,下面将详细解释每一层的功能和它们之间的交互。 1. **Action层(控制层)**: 这一层主要负责接收用户的请求,进行业务...

    Action,Service和Dao功能

    为了更好地理解和分离 Action、Service 和 Dao 的功能,我们可以将它们分为不同的层次,每个层次都有其特定的职责。 Action 层 Action 层是处理页面逻辑的层次,它主要负责处理用户的请求,例如接收请求参数,验证...

    使用jsp-servlet-service-dao四层结构完成用户信息的增删改查操作

    本文将深入探讨如何使用jsp-servlet-service-dao四层架构来实现这样的系统,包括用户信息的增删改查功能,以及权限控制机制。 首先,让我们理解这四层架构的每一层: 1. **JSP(JavaServer Pages)**:JSP是Java ...

    ssh.rar_Action!_service dao_ssh action_ssh com.dao_ssh dao

    通过这个简单的SSH示例,开发者可以学习如何组织和分层一个Java Web应用,理解MVC模式如何工作,以及Spring和Hibernate如何协同处理业务逻辑和数据访问。这为构建更复杂的应用提供了一个坚实的基础。

    struts+spring+ibatis框架总结.doc

    在Eclipse中,你可以创建动态Web项目,导入必要的库,配置Web.xml和struts-config.xml文件,设置数据源和Ibatis的配置文件,然后就可以编写Action、Service和DAO层的代码,以及对应的JSP视图页面。 总的来说,...

    关于DAO的相关论文

    6. 分层架构:DAO模式是分层架构的一部分,常与Service层和Controller层配合使用。Service层负责业务逻辑,调用DAO层进行数据操作,而Controller层处理用户请求并调用Service层。 7. 扩展性:DAO模式使得添加新的...

    dao.rar_DAO模型jsp_DAO模型例子_jsp DAO模型

    学习DAO模型对于理解Java Web开发中的分层架构至关重要,它能帮助你构建出更加健壮、可维护的应用程序。通过实践这个例子,你可以掌握如何有效地管理数据库操作,提高代码质量,并为以后更复杂的应用场景打下基础。

    一键生成java三层代码、数据库设计文档、接口对接文档(dao、entity、mapper、service、controller)

    1. **Java三层架构**:这是软件开发中常见的分层架构模式,包括表现层(Controller)、业务逻辑层(Service)和数据访问层(DAO)。表现层处理用户交互,业务逻辑层负责业务规则的实现,数据访问层则处理与数据库的...

    应用分层及规约

    应用分层及规约的知识点涉及软件架构中的分层概念和各层之间的依赖关系,异常处理规约,以及分层领域模型规约。以下是对这些概念的详细阐述: ### 应用分层 在软件开发中,应用分层是一种常见的设计模式,它将应用...

    jdbcdao.zip

    总结起来,"jdbcdao.zip"项目是一个很好的学习资源,它展示了JDBC和DAO模式在实际应用中的运用。通过研究和理解这个系统,新手能够深入理解数据库访问的底层原理,提升Java编程和数据库管理的能力。

    数据源及分层开发下载资料

    总结来说,"数据源及分层开发下载资料"涵盖了数据库连接、JDBC使用、分层架构设计以及MySQL基础等多个方面。通过学习,开发者可以掌握如何高效地管理数据库连接,理解MVC模式的应用,以及在实际项目中如何实施分层...

    简单员工系统的实现(分层思想、数据库连接池的使用)

    总结,这个项目是一个基于Java的简单员工系统,它利用分层设计和数据库连接池技术实现了与MySQL数据库的高效交互,提供对部门和员工信息的管理。通过分析和理解这些核心概念,开发者可以学习到如何构建类似的数据库...

    DAO设计模式开发案例-核心理念

    大型项目通常需要更复杂的架构,DAO模式可以作为基础,结合其他设计模式如Service层、Repository模式等,构建更完善的分层架构。例如,DAO层专注于数据访问,Service层处理业务逻辑,而Repository层则提供数据源的...

    maven分层开发

    在分层开发中,每个模块会有自己的目录结构,比如`service`、`dao`、`model`等。 2. **模块定义**:在`pom.xml`文件中,我们可以定义项目依赖和模块关系。通过`<modules>`标签可以声明子模块,每个子模块也有自己的...

    springMVC+mybatis+mysql-论坛源码

    SpringMVC通过DispatcherServlet接收请求,通过HandlerMapping映射到对应的Controller,然后Controller处理请求,调用Service层进行业务处理,Service层再与DAO层交互,最终由DAO层通过MyBatis操作数据库。这种分层...

    MVC分层 PPT

    **MVC分层架构详解** MVC(Model-View-Controller)是一种广泛应用于Web开发的分层设计模式,它的核心思想是将应用的业务逻辑、数据处理和用户界面分离,以实现更好的组织和解耦。以下是对MVC各层的详细说明: 1. ...

    ssh开发最简单的注解版增删改查,数据库在里面,分层清晰,供大家学习用

    "分层清晰"意味着项目的结构遵循了良好的设计原则,通常包括表现层(Web层)、业务逻辑层(Service层)、数据访问层(DAO层)以及模型层(Model层)。这样的分层设计有助于提高代码的可读性和可维护性。 在lib目录...

Global site tag (gtag.js) - Google Analytics