`

DAO和Service层的一些解释

 
阅读更多

转发自:http://blog.csdn.net/njujmj/article/details/5202915

1,daoservice对应 

       一般情况下,Hibernate DAO只操作一个POJO对象,因此一个DAO对应一个POJO对象。 Service层是为了处理包含多个POJO对象(即对多个表的数据操作)时,进行事务管理(声明式事务管理)。Service层(其接口的实现类)被注入多个DAO对象,以完成其数据操作。 

2, Service之有无    

        这一点我的看法未必正确,我的脑海现在有两种构建业务层的模式:    

      模式1是Service + DAO,即DAO中只做CRUD及类似的简单操作(称之为功能点,不包含业务逻辑),Service中通过调用一个或多个DAO中的功能点来组合成为业务逻辑.Service的数量应该由功能模块来决定。    

      在这种模型中业务逻辑是放在Service中的,事务的边界也应该在Service中控制. 当然,直接在Service中控制事务会引入非业务逻辑的代码,幸好Spring的AOP可以解决这个问题,这也是引入Spring的原因之一.     

       如果说到缺点,就在于对某些对象的操作就是简单的CRUD,Service层显得累赘.     模式2是Service + BO, 而BO = DAO + 业务方法, 在原先DAO的基础上添加业务方法,形成BO对象。需要注意的是BO中的业务方法往往是针对一个实体对象的,如果需要跨越多个实体对象,则方法应该放在Service中。     

       举例来说,一个简单的银行帐户管理系统,创建帐户这个BO对象,里面可以有修改密码,取钱等业务方法(不难看出,这些方法都只对单个帐户对象进行操作)。现在需要添加一个转账方法,就应该放在Service中。    

       这里Service和BO的关系是什么样的呢?再举一例:以国家行政机关为例:粮食局负责收粮,卖种子等,建设部负责审批土地买卖,建设公路等,这都是行政部分份内的事儿。突然某地发了水灾,救灾时需要粮食局开仓放粮,建设部修建临时房屋,如何协调两个部门?就需要成立专门的救灾委员会,由救灾委员会出面对两个部分的资源进行调拨。这里两个部分就是BO,而救灾委员会就是Service。不知我的意思是否表达准确了,呵呵。     模式1的在划分ServiceDAO时界限清晰,但会带来一些无必要的代码。     

      模式2的划分相对复杂,然而可以提高编码效率。    

     当然小规模的应用中,没有Service,完全是DAO或BO也是可以接受的。 

3,ServiceDAO的接口之有无     

      接口是一种契约,它可以有多种实现。所以接口之有无取决于具体实现是否需要多样化。如果铁定一种DAO或一种Service只有一种实现,那么抽象出接口的意义不大。然而一些大型应用或许需要DAOService的多种实现(比如上面例子中的帐户DAO,可能需要一种Hibernate实现、一种CMP实现和一种JDO实现),为了向上一层隐藏具体实现类,需要采用接口。    

      隐藏具体实现类的创建过程,这有两种方法:一是实用工厂方法,代价是代码量大(每个DAOService一个工厂)。二是使用Spring的IoC,实现依赖注入,不需要写额外的代码,这也是引入Spring的理由之二。

分享到:
评论

相关推荐

    Service层和DAO层解析

    Service层和DAO层是软件开发中常见的两种设计模式,主要用于分离业务逻辑和数据访问操作。在Java Web开发中,它们通常被应用于三层架构或MVC(Model-View-Controller)模型中。 DAO(Data Access Object)层是负责...

    DAO层_Service层_Controller层、View层介绍

    DAO层_Service层_Controller层、View层的一些了解知识,帮助填充对这部分比较空白的开发者们。

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

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

    一次性生成dao和service层

    在反复的做项目的过程中,是不是每次都有大量的dao和service生成(vo的) 是不是总是要复制,粘贴.本人花了一天时间写了一个小小的工具.只需配合一下vo包名即可生成所有的vo 的dao 和service (当然,您的框架和我不一样只...

    java代码生成器(dao层service层)

    总的来说,Java代码生成器(dao层service层)是一种高效开发工具,能够帮助开发者快速生成符合项目规范的DAO和服务层代码,提高开发效率,减少重复劳动,同时也能保证代码质量。通过合理利用代码生成器,开发团队可以...

    jsp、servlet进行增删改查,dao层和service层分开

    在Java Web开发中,"jsp、servlet进行增删改查,dao层和service层分开"是一种常见的设计模式,它遵循了MVC(Model-View-Controller)架构,旨在提高代码的可维护性和可扩展性。以下是这个模式的详细解释: 1. **...

    快速生成dao、service、controller等相关代码

    2. Service层:Service层是业务逻辑的载体,它调用DAO层的方法来完成实际的数据操作。插件能够生成服务接口和服务实现类,其中包含了对DAO方法的调用,以实现CRUD操作。这样,开发者可以专注于业务逻辑的实现,而...

    自动生成dao,service

    Service层则负责业务逻辑,它调用DAO层的方法并进行必要的事务管理和业务规则处理。自动生成这些层的代码可以帮助开发者快速构建应用的基础架构。 这篇博客链接(由于无法直接访问,以下内容基于一般情况的推测)...

    ftl模板自动生成dao、service层功能,包括实现

    ftl模板自动生成dao、service层功能,包括实现... ftl模板自动生成dao、service层功能,包括实现... ftl模板自动生成dao、service层功能,包括实现... ftl模板自动生成dao、service层功能,包括实现...

    Spring的作用贯穿了整个中间层,将Web层、Service层、DAO层及PO无缝整合

    - **Spring**:用于Service层和DAO层,提供依赖管理和事务管理等功能。 - **Hibernate**:用于DAO层,负责对象关系映射(ORM),使得Java对象能够与数据库表相对应。 3. **配置文件**:配置文件是Spring框架中的...

    Java自动生成entity、dao、service、controller代码

    Java自动生成entity、dao、service、controller代码

    基于MAVEN的SpringMVC+Mybatis整合及dao、service强封装

    二、在封装上针对Mybatis进行Dao、service层封装,里面提供两种实现机制:一种采用注解泛型动态实现cud操作,目前查询还是有缺陷;另一种机制采用xml文件形式实现dao、service、controller层封装,具体业务类只需...

    hibernate4 通用dao,service

    3. Service层的设计:讨论如何在Service层中封装业务逻辑,调用DAO方法,可能还包括异常的捕获和处理,以及事务的控制。 4. 泛型的应用:可能使用Java泛型来提高DAO和Service的复用性,使得一个DAO或Service类可以...

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

    因此,本文将对Action、Service和Dao的功能进行详细的区分和解释。 首先,让我们从Action开始。 Action是指与页面相关的逻辑处理,主要负责处理页面的输入和输出,并对业务逻辑进行调用。例如,在Struts框架中,...

    自动生成MVC中的Service层、Dao层及Model层代码

    本文将详细介绍如何自动生成MVC架构中的Service层、Dao层以及Model层代码,以提高开发效率。 首先,Service层是业务逻辑层,它负责处理应用的核心业务。开发者通常会在此层与数据库交互,调用Dao层的方法来完成数据...

    自动生成dao层和service层代码demo

    闲暇时间,想撸一下代码的时候,可以拿这个练手;...配置好数据库,自动生成dao层和service层代码,可以优化结构,输出自己想要的内容,也可控制不生成service层,或者进一步开发,生成controller层代码,欢迎更新;

    SSM框架下基本的mapper,dao,service,controller等相关文件的整理

    在Service层中,我们可以使用Spring框架提供的依赖注入机制,来将Dao层的对象注入到Service层中,从而实现业务逻辑与数据访问之间的交互。 Controller层 Controller层是SSM框架中的Web层,负责将用户请求与业务...

    javaSE-day11-day12--主要实现了购物系统的dao层和service层

    在给定的标题“javaSE-day11-day12--主要实现了购物系统的dao层和service层”中,我们可以看到开发者在这两天的学习中重点集中在了系统的核心部分——数据访问对象(DAO)层和服务(Service)层的实现。 **数据访问...

    dao+service+servlet+jsp实现留言板(添加、查看)

    本项目采用DAO(数据访问对象)、Service层以及Servlet和JSP技术,按照MVC(模型-视图-控制器)模式来实现留言板功能,包括留言的添加和查看。 1. **MVC模式**: MVC是一种广泛应用于Web应用开发的设计模式,它将...

    新闻发布系统设计思路(Dao与service)

    Service层通常调用Dao层的方法来完成对数据的增删改查,并进行必要的业务验证和异常处理。在设计Service时,我们需要考虑到服务的可重用性和松耦合性,确保各个Service之间相互独立,便于维护和扩展。 在实际开发中...

Global site tag (gtag.js) - Google Analytics