DAO,Service,BO的关系
SpringDAOIOCAOPHibernate

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的理由之二

关于sevice层和bo相关推荐

  1. javaweb中dao层如何使用

    项目具体目录如下: Basedao的内容如下: package com.monkeyshop.dao;import java.sql.*;public class Basedao {static{// ...

  2. PO VO BO DTO POJO DAO(转)

    2EE开发中大量的专业缩略语很是让人迷惑, 特别是对于刚毕业的新人来说更是摸不清头脑.若与公司大牛谈技术人家出口就是PO VO BO DTO POJO DAO 等,让新人们无比仰慕大牛. 为了让新人快 ...

  3. n-tier(层)架构

    一,不断要去改.二来还得快.就必须要用n-tier(层)模式开发.这样我就可以把分工分得很细.需要改动时,可以一步到位,找到需要改动的地 方,而且还可以非常快. n-tier架构,把model细化分成 ...

  4. springboot第6集:PO、VO、DAO、BO、DTO、POJO 能分清吗?

    领域模型命名规约: 数据对象:xxxDO,xxx即为数据表名 数据传输对象:xxxDTO,xxx为业务领域相关的名称. 展示对象:xxxVO,xxx一般为网页名称. POJO是DO/DTO/BO/VO ...

  5. springboot:PO、VO、DAO、BO、DTO、POJO 你能分清吗?

    领域模型命名规约: 数据对象:xxxDO,xxx即为数据表名 数据传输对象:xxxDTO,xxx为业务领域相关的名称. 展示对象:xxxVO,xxx一般为网页名称. POJO是DO/DTO/BO/VO ...

  6. springboot中的PO、VO、DAO、BO、DTO、POJO

    领域模型命名规约: 数据对象:xxxDO,xxx即为数据表名 数据传输对象:xxxDTO,xxx为业务领域相关的名称. 展示对象:xxxVO,xxx一般为网页名称. POJO是DO/DTO/BO/VO ...

  7. 开发中遇到的问题和经验 记录 ------- 后端篇

    核心价值就是把现实世界的业务操作搬到计算机上,通过计算机软件和网络进行业务和数据处理,但是时至今日,能用计算机软件提高效率的地方,几乎已经被全部发掘过了,必须能够发掘出用户自己都没有发现的需求,必须洞 ...

  8. POJO、DO、DTO、VO的区别

    1.概念 对象 含义 作用 作用范围 DO(Data Object) 数据对象 与数据库表结构对应,通过DAO层向上传输数据源对象 数据库与Dao层,Dao层与Service层 DTO(Data Tr ...

  9. WildFly评估之WildFly的模块化系统

    感谢朋友[吴杰]投递本文. WildFly,前身是JBoss AS,从V8开始为区别于JBoss EAP,更名为WildFly.Wildfly 8主要具备如下特性: Java EE7的参考实现(201 ...

最新文章

  1. oracle数据库gold,Oracle技术之goldedgate初始化数据
  2. python【蓝桥杯vip练习题库】ADV-17统计单词数
  3. 风险案例-25期-与有过合作经历客户在新合同约定中过于简单、范围不明确,导致客户对新需求工作量不认可...
  4. 开发指南专题八:JEECG微云快速开发平台数据字典
  5. java web 数据库操作_Java Web----Java Web的数据库操作(三)
  6. 1503171912-ny-一道水题
  7. oracle关键字作为字段名使用方法
  8. linux audio(alsa)驱动注册的简明流程.
  9. PreScan中Sensor的理解
  10. U盘安装fedora 9
  11. PYTHON利用REMOVEBG库实现抠图
  12. Python出现 RuntimeError: dictionary changed size during iteration 的解决方法
  13. 电赛硬件电路设计抗干扰措施
  14. python数据库-6
  15. Activity到底是什么时候显示到屏幕上的呢?
  16. @Param注解的使用和解析
  17. 【Java 8 新特性】Java 8 Collectors示例
  18. 第二证券|家用储能设备出口暴增,储能概念发力走高,派能科技等大涨
  19. Flume KafkaChannel的使用
  20. 什么是虚拟专用服务器?虚拟专用服务器说明

热门文章

  1. 积分球高漫反射内表面涂层
  2. 分享ActionScript视频系列教程——第31讲 聊天室程序
  3. Por Costel and the Match Gym - 100923H(经典种类并查集)
  4. RT-ThreadBearPi 开发笔记 -- 小熊派基于RT-Thread使用ESP8266进行网络连接
  5. 前端开发学习之【Vue】-下
  6. 解决低版本Xcode不支持高版本iOS真机调试的问题
  7. centos7开放mysql端口
  8. AB测试需要知道的知识
  9. css选择器的优先级,以及用法
  10. 7-2 利用数组计算斐波那契数列 (15 分)