`
julyflame
  • 浏览: 12379 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

DAO,Service,BO的关系

阅读更多
1,DAO
一般情况下,一个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中。
当然小规模的应用中,没有Service,完全是DAO或BO也是可以接受的。
3,接口之有无
接口是一种契约,它可以有多种实现。所以接口之有无取决于具体实现是否需要多样化。如果铁定一种DAO或一种Service只有一种实现,那么抽象出接口的意义不大。然而一些大型应用或许需要DAO和Service的多种实现(比如上面例子中的帐户DAO,可能需要一种Hibernate实现、一种CMP实现和一种JDO实现),为了向上一层隐藏具体实现类,需要采用接口。
隐藏具体实现类的创建过程,这有两种方法:一是实用工厂方法,代价是代码量大(每个DAO和Service一个工厂)。二是使用Spring的IoC,实现依赖注入,不需要写额外的代码,这也是引入Spring的理由之二
分享到:
评论

相关推荐

    Java利用Freemarker模板自动生成dto、dao、rowmapper、bo、service代码

    Service层是业务逻辑的核心,它封装了BO和DAO的调用,对外提供服务接口。生成服务层代码时,会包含一系列业务服务方法,这些方法可能会调用DAO来完成数据持久化,同时结合BO进行业务逻辑处理。 在实际项目中,...

    Java的(PO,VO,TO,BO,DAO,POJO)解释

    "Java的(PO,VO,TO,BO,DAO,POJO)解释" Java作为一门流行的编程语言,在软件开发中扮演着重要角色,其中一些关键概念和技术为开发者提供了方便快捷的开发体验。本篇文章将对Java中的PO、VO、TO、BO、DAO、POJO等概念...

    FreeMarker模板包括dto、dao、rowmapper、bo、service

    FreeMarker通用模板。... 它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。 模板编写为FreeMarker Template Language (FTL)。... 那就意味着要准备数据在真实编程语言中来显示,比如...

    java(PO,VO,BO,DAO,POJO)Explained Collection

    Java开发中,PO(Persistant Object)、VO(Value Object)、BO(Business Object)、DAO(Data Access Object)和POJO(Plain Old Java Object)是常见的五个概念,它们在软件设计和开发中扮演着不同的角色。...

    java术语(PO/POJO/VO/BO/DAO/DTO)

    ### Java术语解析:PO/POJO/VO/BO/DAO/DTO 在Java开发中,尤其是在企业级应用中,理解并正确使用PO、POJO、VO、BO、DAO、DTO等术语至关重要。这些术语不仅代表了不同的对象类型,还反映了软件架构的不同层次和职责...

    BO(business object)由浅入深学习

    BO是三层架构中的中间层,位于数据访问层(DAO)与表现层(UI)之间,起到数据传输、业务规则处理和业务流程控制的作用。 在学习BO的过程中,我们需要理解以下几个关键知识点: 1. **三层架构**:三层架构是软件...

    ch7.MVC与DAO_dao_mvc_

    1. **模型(Model)**:模型层通常包括业务对象(BO, Business Object)和DAO。BO封装了业务逻辑,而DAO负责处理数据存取。 2. **控制器(Controller)**:控制器接收到用户请求后,调用相应的服务层方法(Service ...

    Bo-Blog spring模板

    Service层通常与DAO层交互,处理数据库操作。 4. **DAO层**:数据访问对象负责与数据库交互,可能使用JDBC、MyBatis或其他ORM框架实现。 5. **视图**:Spring MVC支持多种视图技术,如JSP、FreeMarker或Thymeleaf...

    java-DAO分层解析.pdf

    业务层,也称为服务层或Business Object(BO),它的主要职责是协调多个DAO操作以实现业务逻辑。例如,业务层可能需要先检查员工编号是否已存在,然后才能执行添加操作,或者根据特定条件更新或删除员工。业务层不...

    sping springmvc mybatis框架的maven web项目

    本人搭建的ssm框架的maven web项目,用maven管理项目的jar包,项目架构搭好,用的都是现阶段最新的jar包,日志输出用log4j,controller层/service层/bo层/dao层都整合好,测试通过,可以直接用作项目开发

    金蝶BOSV6.1_业务组件API参考手册

    com.kingdee.bos.dao.ormapping_ex.service com.kingdee.bos.dao.ormapping.client com.kingdee.bos.dao.ormapping.impl com.kingdee.bos.dao.ormapping.lazyload com.kingdee.bos.dao.query ...

    struts+spring的一个简单项目

    2. 创建Spring的bean配置文件,定义Action、Service和DAO等bean,以及它们之间的依赖关系。 3. 在Struts的Action类中,声明对Spring管理的Service的依赖,Struts会在请求处理时自动注入。 4. 配置Struts的struts-...

    guestbookv2.1

    它是基于开放服务拦截器(OSIV,Open Service Interceptor)模式、DAO(Data Access Object)泛型以及Hibernate ORM(对象关系映射)框架的。这样的设计允许开发者高效地处理数据库交互和业务逻辑。 【描述】中提到...

    ssh增删改查

    在SSH框架中,Spring作为服务层,管理着业务对象(BO)和数据访问对象(DAO),并负责事务处理。在增删改查操作中,Spring可以实现事务的自动提交和回滚,保证数据的一致性。 **Hibernate** 是一个持久化框架,它...

    jsf+spring+hibernate

    - **DATA 层**:主要包含数据库相关的实体类(BO,Business Object)和数据访问对象(DAO)。实体类如 `User` 与数据库表进行映射,DAO 接口及其实现负责与数据库的 CRUD 操作。 在实际开发中,每个层之间的通信是...

    空白springmvc和mybatais项目

    2. **Model**: 模型代表应用程序的数据,通常由业务对象(BO)或数据访问对象(DAO)组成。 3. **View**: 视图负责展示数据,可以是JSP、HTML或其他模板技术。 4. **DispatcherServlet**: Spring MVC的核心组件,它...

    ssmMaven.rar

    Maven通过使用一个项目对象模型(Project Object Model,POM),可以自动解决项目的依赖关系,编译源码,运行测试,打包,部署等。在"ssmMaven"项目中,Maven的POM.xml文件定义了项目的依赖,包括Spring、Spring MVC...

    ssh框架书写合理顺序及规范

    - 配置Spring的`applicationContext.xml`文件,声明Service和DAO的bean,以及它们与Action的依赖注入。 5. **视图层(JSP)**: - 引入Struts2的标签库,确保在JSP文件的顶部包含正确的头文件。 - 使用Struts2的...

    java逆向生成实体类工具

    Java逆向生成实体类:包括所需要的import,tag,字段注释,序列化等。配套的还有dao层,dao.xml,service层,serviceImpl的生成文件,在其他下载资源中。

Global site tag (gtag.js) - Google Analytics