java service domain dao 分层思路

今天在开发项目的时候,对项目的java后台的分层有一些看法:

首先,鼓励使用service domain dao 层分层设计概念。

其次,对几层作用的理解:

第一:dao层操作单表,不涉及复杂逻辑,主要是表的增删改查操作,完全根据domain的要求来查询数据。

第二:domain层考虑业务逻辑,例如过滤条件,放行或者返回,以及数据的处理,为调用dao层做好准备,一个domain可以调用一个或者一组相关的dao层

第三:service层调用一个或者一组domain层,主要是展现需要开放出去的接口,其中domain层不是所有的接口都要再service层体现的,可能仅在service层开放几个接口出去,此外,主要接口需要对接受的参数要尽量的扩大化,也就是说可以容纳各种类型的参数的接入(Object),然后需要在service层做好转换,以备domain层使用。

正确的设计应该是,一个领域活动会聚合对应一个或一组DAO ,来完成一个领域活动。而一个服务可能包含两个领域活动,比如一个转账的业务,对应两个领域活动。两个帐户的金额分别发生变化,需要操作一组领域活动,而每个活动需要操作很多表(调用多个DAO )。

使用 接口方式可以实现系统之间的松耦合:

一般定义: IUserService  UserService  IUserDomain  UserDomain  IUserDao UserSqlDao   UserHbaseDao

使用接口可以有不同的实现类 ,不需要改代码,可以通过配置更改不同的实现类

时间: 2024-10-13 07:38:37

java service domain dao 分层思路的相关文章

Spring Service、Dao进行Junit单元测试

pring对Controller.Service.Dao进行Junit单元测试总结 ? 所有用Junit进行单元测试,都需要下面的配置 @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = {"classpath:applicationContext.xml"}) ? applicationContext.xml 是整个项目的Spring的配置文件.包括数据源配置.MVC配置和各种Bean的注

基于JSP+Serlvet+JDBC的开发(3)-- Service、DAO层实现

这里为了使不必在所有Service和DAO都写基础的增删查改,我写了两个基类接口,BaseService和BaseDAO BaseDAO.java (这里使用了泛型,PK 是主键,T是实体类型),这样其他DAO只要继承这个DAO就可以实现基础增删查改了. 1 package dao; 2 3 import java.io.Serializable; 4 import java.util.List; 5 6 /* 7 * 所有DAO接口继承此接口获取基本的增删查改规范 8 */ 9 public

一个简单的登录例子去理清分层思路

①:login.html文件 登录按钮设置: 用户密码设置 相应的jQuery代码 ②:LoginServlet.java文件 login方法: ③:service层UserServiceImp.java文件 ④:dao层的文件 过程结束

Spring事务管理 ——》java service

java的事务处理,如果对数据库进行多次操作,每一次的执行或步骤都是一个事务.如果数据库操作在某一步没有执行或出现异常而导致事务失败,这样有的事务被执行有的就没有被执行,从而就有了事务的回滚,取消先前的操作..... 注:在Java中使用事务处理,首先要求数据库支持事务.如使用MySQL的事务功能,就要求MySQL的表类型为Innodb才支持事务.否则,在Java程序中做了commit或rollback,但在数据库中根本不能生效. 1.JavaBean中使用JDBC方式进行事务处理 public

Java VO\PO\DAO\BO详解

VO 值对象\PO 持久对象,它们由一组属性和属性的get\set方法组成. PO全程持久对象 最形象的理解就是一个PO就是数据库中的一条记录,可以看成是与数据库中的表相影射的java对象. 好处是可以把一条记录作为一个对象处理,可以方便的转为其他对象. BO全称为业务对象 主要是把业务逻辑封装为一个对象,这个对象可以包括一个或多个其他对象,用于业务层之间的数据传递. 建立一个对应简历的BO对象处理简历,这个BO可以包含一个教育经历PO,一个工作经理PO,一个社会关系PO VO全称表现成对象 主

Java Service Wrapper配置详解

1 #encoding=UTF-8 2 # Configuration files must begin with a line specifying the encoding 3 # of the the file. 4 5 #******************************************************************** 6 # Wrapper License Properties (Ignored by Community Edition) 7 #*

Java Service Wrapper简介与使用

Wrapper可以将java application 编程一个系统服务器,非常好用! 之前有做过整理,但是公司上不了博客园,所以这边转下下做下记录! 1. 下载java service wrapper 网址:http://sourceforge.net/projects/wrapper/ 或者 http://wrapper.tanukisoftware.com/doc/english/download.jsp 我下载的版本是wrapper-windows-x86-32-3.5.20.zip. 2

流程任务-服务任务(Java Service Task)

服务任务用于请求流程外任务或自动执行任务,有3种实现:Java Service Task/Web Service /Task和shellTask, 当流程到达该任务时,执行相应的java类或webservice或shell命令. 1.Java Service Task 1.1使用activiti:class指定java类,该类必须实现JavaDelegate,activiti每次都会创建新的实例. public class MyJavaDelegate implements JavaDelega

java service wrapper日志参数设置及优化

一般在容器比如tomcat/weblogic中运行时,我们都是通过log4j控制日志输出的,因为我们现在很多服务端使用java service wrapper(至于为什么使用jsw,原先是比较排斥使用的,但是当一台服务器上部署10来个应用时,我们无条件的选择了jsw,因为不需要折腾和规划这么多的端口了,尤其是我们还是自己的RPC时,每个应用的端口需求从4个变成了1个)进行启动和管理,而JSW还有自己的日志格式,可以说在log4j上又套了一层马甲,默认的日志格式并不是输出原始log4j信息,因为我