泛型Dao与Service

看了几个帖子,泛型Dao与Service的主要目的就是要减少重复代码。具体的说明如下:

1. 定义一个BaseDao接口,此接口包含了一些通用的DAO操作,例如:增加、删除、更新、根据Id查找对象等

2. 创建一个BaseDaoImp实现BaseDao接口,分别实现上述的几种通用方法

3. 定义一个BaseService接口,此接口包含一些对应DAO的操作

4. 创建BaseServiceImp实现BaseService接口,该类组合BaseDaoImp,通过@Resource注入。

5. 创建针对某个业务的Service接口,例如:WorkOrderService接口,该接口继承BaseService接口

6. 创建WorkOrderServiceImp类,该类继承BaseServiceImp

写个Demo程序,应该是没有问题的。但在实际业务场景中,DAO层比较稳定,基本上围绕着这几个操作:CRUD。如果我们遵循SRP原则,DAO层应该是只针对某一个对象的操作。但我们还是要考虑DAO层发生变化的情况。

更多的变化应该在Service层,所以,Service层是不稳定的。例如:针对订单的操作和针对用户权限的操作会有比较大的差异。

Service层可能会组合多个Dao对象,所以个人觉得Service层可以在一开始的时候不进行泛型化,如果后面确实在Service出现了大量的重复代码,再考虑重构。不然,可能会卷入到不应该的复杂中。

泛型DAO与泛型Service的更多相关文章

  1. SpringJdbc持久层封装,Spring jdbcTemplate封装,springJdbc泛型Dao,Spring baseDao封装

    SpringJdbc持久层封装,Spring jdbcTemplate封装,springJdbc泛型Dao,Spring baseDao封装 >>>>>>>& ...

  2. 《项目架构那点儿事》——Hibernate泛型Dao,让持久层简洁起来

    [前言]hibernate作为持久层ORM技术,它对JDBC进行非常轻量级对象封装,使得我们可以随心所欲的使用面向对象的思想来操作数据 库.同时,作为后台开发的支撑,的确扮演了一个举足轻重的角色,那么 ...

  3. 一个好用的hibernate泛型dao

    以前从springside2.0上搞下来的很好用的,基本实现dao零编码只要配置xml文件就行了. 先看图: 一共4层,com.demonstration.hibernate.basedao是我加的用 ...

  4. JPA的泛型DAO设计及使用

    使用如Hibernate或者JPA作为持久化的解决方案时,设计一个泛型的DAO抽象父类可以方便各个实体的通用CRUD操作.由于此时大部分实体DAO的CRUD操作基本一样,采用泛型设计解决这个问题,带来 ...

  5. 使用getGenericSuperclass()和getActualTypeArguments()将DAO做成泛型

    一.getGenericSuperclass()和getActualTypeArguments()基本用法: import java.lang.reflect.ParameterizedType; p ...

  6. 泛型DAO

    最近正在学习泛型DAO,通过网上查阅资料,汇总并自己整理了一下.提前需要学习的知识java反射.泛型 用到的反射如下: Class<T>类 是java.lang包下,Class类的实例表示 ...

  7. 自己动手写泛型dao

    在经过一系列的问题得到解决之后,泛型dao终于写出来了.泛型dao相比于以前写的dao最大的好处就是,大大提高了代码的复用性,以往我们要对数据库中表中的数据进行操作的时候,每张表都需要写一个dao来操 ...

  8. 浅谈Java——泛型DAO

    首先解释一下为什么要学习泛型DAO.平时在写DAO的时候是一个接口对应一个实现类,实现类里面要写很多的操作数据库的方法.当我们有很多的javaben的时候我们会写很多的接口和实现类,并且里面的代码都是 ...

  9. SSH项目Dao层和Service层及Action的重用

    泛型 1.泛型的定义 1.泛型是一种类型    1.关于Type            //是一个标示接口,该标示接口描述的意义是代表所有的类型        public interface Typ ...

随机推荐

  1. servlet过滤器使用

    servlet的过滤器夹在用户和servlet之间,可以截获并预处理或者打断{用户到servlet的请求或servlet到用户的响应},但本身并不能处理和响应用户请求. filter类必须实现Filt ...

  2. C#进阶系列——WebApi 异常处理解决方案

    前言:上篇C#进阶系列——WebApi接口传参不再困惑:传参详解介绍了WebApi参数的传递,这篇来看看WebApi里面异常的处理.关于异常处理,作为程序员的我们肯定不陌生,记得在介绍 AOP 的时候 ...

  3. 单点登录改进版-使用ajax分发cookie避免重定向轮询

    前言 继上一篇博文:可跨域的单点登录(SSO)实现方案[附.net代码]虽然实现了单点登录,也存在很多不合理的地方.很多热心的朋友也给出了很多指导性的意见,特别是 LoveCoder提出的意见. 在很 ...

  4. 测试docker不同主机间容器互相访问

    测试服务器(centos6.5):192.168.16.70 网卡:eth0192.168.16.74 网卡:eth0第一步,分别在2台机器执行: yum install docker service ...

  5. 文件上传之——用SWF插件实现文件异步上传和头像截取

    之前写过几篇文件上传,那些都不错.今天小编带领大家体会一种新的上传方法,及使用Flash插件实现文件上传. 使用Flash的好处就是可以解决浏览器兼容性问题.之前我写的一个快捷复制功能也是利用的Fla ...

  6. c#datagridview

    //保证显示当前活动单元格 this.Invoke(new Action(() => { dataGridView1.CurrentCell = dataGridView1.Rows[index ...

  7. 用MySQL语法建 一个学生表,包括学生姓名、性别、年龄、班级信息。

    (1)创建表的SQL语句 create table student ( ID int primary key not null, NAME varchar(50), sex int, age int, ...

  8. jquery和zepto的扩展方法extend

    jquery和zepto的扩展方法extend 总结下jQuery(3.1.1)和zepto(1.1.6)到底是如何来开放接口,使之可以进行扩展,两者都会有类型判断,本文使用简单的类型判断,暂不考虑兼 ...

  9. bzoj3052: [wc2013]糖果公园

    又是一代神题. uoj测速rank10,bzoj测速rank26(截止当前2016.5.30 12:58) 带修改的树上莫队. 修改很少,块的大小随便定都能A 然而我一开始把开3次根写成了pow(bl ...

  10. MATLAB的三维散点图

    MATLAB中三维散点图函数为scatter3(x,y,z) 三维火柴图为stem3(x,y,z)