当前位置:首页 > 开发 > 互联网 > 正文

关于使用ssh框架时,pojo、dao、service三层的关系

发表于: 2011-07-13   作者:风远阁   来源:转载   浏览次数:
摘要: 文章来源于网络,仅用于学习: 1,dao和service对应        一般情况下,Hibernate DAO只操作一个POJO对象,因此一个DAO对应一个POJO对象。 Service层是为了处理包含多个POJO对象(即对多个表的数据操作)时,进行事务管理(声明式事务管理)。Service层(其接口的实现类)被注入多个D
文章来源于网络,仅用于学习:

1,dao和service对应

       一般情况下,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的在划分Service和DAO时界限清晰,但会带来一些无必要的代码。    

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

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

3,Service和DAO的接口之有无    

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

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

关于使用ssh框架时,pojo、dao、service三层的关系

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
使用UML设计程序 使用 用例图 画出程序的功能模块(小人代表角色,椭圆代表功能) 第一步:画出实体
SSH三层框架搭建 1、下载好eclipse,Struts2,Spring,Hibernate。 2、创建一个web工程,命名SSH_Demo
O/R Mapping 是 Object Relational Mapping(对象关系映射)的缩写。通俗点讲,就是将对象与关系数
O/R Mapping 是 Object Relational Mapping(对象关系映射)的缩写。通俗点讲,就是将对象与关系数
java 阵营中的Apache-cxf和C#的wcf目前是市场上webservice产品的主流框架。 Web Service技术简单的
J2EE开发中大量的专业缩略语很是让人迷惑,尤其是跟一些高手讨论问题的时候,三分钟就被人家满口的
DAO: data access object数据访问对象 这个大家最熟悉,和上面几个O区别最大,基本没有互相转化的
PO persitant object 持久对象 PO persitant object 持久对象 BO business object 业务对象 VO valu
jqmobi(appframework)作为Intel的一款html5移动前端框架,以其自身轻量级和容易上手获得了很多移动H
任务要求 :使用 Xfire 实现一个简单的“ Hello , World ” Web Services ,作业应当包括相关的实
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号