文章来源于网络,仅用于学习:
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框架,全称为Struts2、Spring和Hibernate的组合,是Java Web开发中常用的一套集成框架。这三种框架分别负责MVC模式中的Model、View和Controller层,为开发者提供了强大的功能和高效的开发效率。 **Struts2** 是...
SSH框架是指Struts2、Spring以及Hibernate三个开源框架的组合,常被用于Java Web应用程序的开发。本文将详细介绍如何使用Eclipse IDE搭建SSH框架(Struts2.5.10 + Spring4.3.7 + Hibernate5.2.9),包括各个组件的...
SSH框架,全称为Struts2、Spring和Hibernate的组合,是Java Web开发中常见的三大开源框架集成。这个框架集合提供了模型-视图-控制器(MVC)架构模式,以及依赖注入(DI)和面向切面编程(AOP)等特性,极大地提高了...
1. **创建包结构**:在项目的`src`目录下创建以下包结构:`model`(实体类)、`dao`(数据访问层)、`service`(业务逻辑层)、`web`(控制器层)。 #### 七、生成Model和DAO 1. **利用MyEclipse生成model和dao**...
开发者拿到这个SSH框架模板后,可以直接在action层编写业务逻辑,调用service层的方法,service层再通过dao层与数据库进行交互。实体类(pojo)根据实际数据库表结构进行调整,而配置文件如struts.xml、spring.xml...
SSH框架的整合使得开发人员可以利用Struts2处理MVC模式,Spring管理依赖注入和事务,以及Hibernate进行对象关系映射,实现松耦合、模块化的开发,提高代码的可维护性和可扩展性。在整个过程中,需要注意各个组件之间...
SSH框架,全称为Struts、Spring和Hibernate,是Java Web开发中常见的三大开源框架整合,用于构建高效、灵活的企业级应用程序。这三个框架分别在Web层、业务层和服务层发挥着核心作用。 Struts作为MVC(Model-View-...
SSH框架,全称为Struts2、Spring和Hibernate的组合,是Java Web开发中常见的三大开源框架集成。这个框架集合提供了模型-视图-控制器(MVC)架构模式,以及依赖注入(DI)和面向切面编程(AOP)等特性,极大地提高了...
【SSH三大框架技术的整合应用】是指将Struts2、Spring和Hibernate这三大Java开源框架集成在一起,以实现高效、灵活的Web应用开发。SSH整合是企业级Java Web开发的常用解决方案,它允许开发者利用Struts2进行MVC设计...
在SSH框架中,控制器层通常由Struts2的Action类担任,负责接收用户请求、调用Service层方法、处理业务逻辑并转发或重定向到相应的视图。 #### 六、配置文件编写 Struts和Spring的配置文件是SSH框架运行不可或缺的...
SSH框架是Java Web开发中常用的三大框架整合,包括Struts、Spring和Hibernate。这个框架组合提供了模型-视图-控制器(MVC)架构,以及强大的持久层和依赖注入功能。以下是一个简化的SSH框架搭建教程: 1. **创建WEB...
2. 系统架构设计:采用分层架构,包括表示层(Web层)、业务逻辑层(Service层)和数据持久层(DAO层),并为每一层创建对应的package。 3. 添加Spring支持:配置Spring的核心文件`applicationContext.xml`,定义...
SSH框架整合是Java开发中常见的技术栈,主要包括Spring、Struts和Hibernate三个核心组件。Spring作为依赖注入(DI)和面向切面编程(AOP)的容器,负责管理对象及对象之间的关系;Struts作为MVC框架,处理HTTP请求并...
SSH框架是指Struts2、Spring以及Hibernate这三种技术的组合,它们分别负责Web层、业务逻辑层和数据访问层,是Java Web应用开发中非常流行的一种轻量级框架。本文将通过一个具体的案例——“添加商品到购物车”功能来...
通过分析和学习这个SSH项目,开发者可以了解如何在实际项目中使用注解进行轻量级配置,提高开发效率,同时掌握SSH框架的核心概念和用法。这样的DEMO对于初学者来说是一份很好的参考资料,而对于有经验的开发者,也...
SSH框架是由Struts、Spring、Hibernate三个主体组件组成的,它们分别负责Web层、业务层和持久化层的工作。下面我们将详细介绍SSH框架中的每个组件的作用和所属层次。 Struts Struts是一个基于MVC(Model-View-...