关于sevice层和bo
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相关推荐
- javaweb中dao层如何使用
项目具体目录如下: Basedao的内容如下: package com.monkeyshop.dao;import java.sql.*;public class Basedao {static{// ...
- PO VO BO DTO POJO DAO(转)
2EE开发中大量的专业缩略语很是让人迷惑, 特别是对于刚毕业的新人来说更是摸不清头脑.若与公司大牛谈技术人家出口就是PO VO BO DTO POJO DAO 等,让新人们无比仰慕大牛. 为了让新人快 ...
- n-tier(层)架构
一,不断要去改.二来还得快.就必须要用n-tier(层)模式开发.这样我就可以把分工分得很细.需要改动时,可以一步到位,找到需要改动的地 方,而且还可以非常快. n-tier架构,把model细化分成 ...
- springboot第6集:PO、VO、DAO、BO、DTO、POJO 能分清吗?
领域模型命名规约: 数据对象:xxxDO,xxx即为数据表名 数据传输对象:xxxDTO,xxx为业务领域相关的名称. 展示对象:xxxVO,xxx一般为网页名称. POJO是DO/DTO/BO/VO ...
- springboot:PO、VO、DAO、BO、DTO、POJO 你能分清吗?
领域模型命名规约: 数据对象:xxxDO,xxx即为数据表名 数据传输对象:xxxDTO,xxx为业务领域相关的名称. 展示对象:xxxVO,xxx一般为网页名称. POJO是DO/DTO/BO/VO ...
- springboot中的PO、VO、DAO、BO、DTO、POJO
领域模型命名规约: 数据对象:xxxDO,xxx即为数据表名 数据传输对象:xxxDTO,xxx为业务领域相关的名称. 展示对象:xxxVO,xxx一般为网页名称. POJO是DO/DTO/BO/VO ...
- 开发中遇到的问题和经验 记录 ------- 后端篇
核心价值就是把现实世界的业务操作搬到计算机上,通过计算机软件和网络进行业务和数据处理,但是时至今日,能用计算机软件提高效率的地方,几乎已经被全部发掘过了,必须能够发掘出用户自己都没有发现的需求,必须洞 ...
- POJO、DO、DTO、VO的区别
1.概念 对象 含义 作用 作用范围 DO(Data Object) 数据对象 与数据库表结构对应,通过DAO层向上传输数据源对象 数据库与Dao层,Dao层与Service层 DTO(Data Tr ...
- WildFly评估之WildFly的模块化系统
感谢朋友[吴杰]投递本文. WildFly,前身是JBoss AS,从V8开始为区别于JBoss EAP,更名为WildFly.Wildfly 8主要具备如下特性: Java EE7的参考实现(201 ...
最新文章
- oracle数据库gold,Oracle技术之goldedgate初始化数据
- python【蓝桥杯vip练习题库】ADV-17统计单词数
- 风险案例-25期-与有过合作经历客户在新合同约定中过于简单、范围不明确,导致客户对新需求工作量不认可...
- 开发指南专题八:JEECG微云快速开发平台数据字典
- java web 数据库操作_Java Web----Java Web的数据库操作(三)
- 1503171912-ny-一道水题
- oracle关键字作为字段名使用方法
- linux audio(alsa)驱动注册的简明流程.
- PreScan中Sensor的理解
- U盘安装fedora 9
- PYTHON利用REMOVEBG库实现抠图
- Python出现 RuntimeError: dictionary changed size during iteration 的解决方法
- 电赛硬件电路设计抗干扰措施
- python数据库-6
- Activity到底是什么时候显示到屏幕上的呢?
- @Param注解的使用和解析
- 【Java 8 新特性】Java 8 Collectors示例
- 第二证券|家用储能设备出口暴增,储能概念发力走高,派能科技等大涨
- Flume KafkaChannel的使用
- 什么是虚拟专用服务器?虚拟专用服务器说明