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代码,代码可以直接复制到项目中使用,代码是基于pring框架的
FreeMarker通用模板。... 它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。 模板编写为FreeMarker Template Language (FTL)。... 那就意味着要准备数据在真实编程语言中来显示,比如...
本人搭建的ssm框架的maven web项目,用maven管理项目的jar包,项目架构搭好,用的都是现阶段最新的jar包,日志输出用log4j,controller层/service层/bo层/dao层都整合好,测试通过,可以直接用作项目开发
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 ...
Java逆向生成实体类:包括所需要的import,tag,字段注释,序列化等。配套的还有dao层,dao.xml,service层,serviceImpl的生成文件,在其他下载资源中。
BO Business Object 业务对象,Service输出的封装业务逻辑对象 AO Application Object 应用对象,Web层和Service层之间抽象的复用对象 VO View Object 显示层对象,Web向模板传输的对象 Query 数据查询对象 各层接收...
本人搭建的ssm框架的web项目,项目架构搭好,用的都是现阶段最新的jar包,日志输出用log4j,controller层/service层/bo层/dao层都整合好,测试通过,可以直接用作项目开发
本人搭建的ssm框架的maven web项目,用maven管理项目的jar包,项目架构搭好,用的都是现阶段最新的jar包,整合了log4j日志,redis缓存,quartz定时任务,全局配置文件在代码中使用等,controller层/service层/bo层/dao层都...
本人搭建的ssm框架的maven web项目,用maven管理项目的jar包,项目架构搭好,用的都是现阶段最新的jar包,整合了log4j日志,redis缓存,quartz定时任务,全局配置文件在代码中使用等,controller层/service层/bo层/dao层都...
common-dao:数据模型层(Dao、Entity、Mapper生成) common-dto:数据交互层(VO、PO、BO、DTO等) service-user:用户服务提供者(用户注册、登录、权限等) operation-system:运营系统(服务消费者) 集成技术 ...
同时身心愉悦的规范后端代码规范:1、好多种分包,哪种更合理一些2、四层架构(controller, service, manager, dao) 是什么,为什么要有四层3、各个层的代码该怎么写才能让团队配合默契,高度一致4、vo, bo, dto, ...
2、四层架构(controller, service, manager, dao) 是什么,为什么要有四层 3、各个层的代码该怎么写才能让团队配合默契,高度一致 4、vo, bo, dto, entity 怎么区分和使用 5、spring的 @Transactional 你用对了...
│ │ │ └─service │ │ │ └─login │ │ │ │ LogInService.java │ │ │ │ │ │ │ └─impl │ │ │ LogInServiceImpl.java │ │ │ │ │ ├─resources │ │ │ applicationContext....