泛型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. .NET跨平台之旅:成功将示例站点升级至ASP.NET Core RC2

    ASP.NET Core RC2 终于发布了( Announcing ASP.NET Core RC2 ).为了庆祝这次发布,我们将运行在 Ubuntu 服务器上的示例站点 about.cnblogs ...

  2. 【Kindle】pdf转mobi适合kindle查看格式

    pdf转mobi适合kindle查看格式 1.用到软件:福昕风腾PDF套件,切白边,PDF-Viewer,导出png图片ChainLP,图片转换为mobi文件<期间要下载kindlegen.ex ...

  3. Podfile使用说明

    什么是Podfile ? CocoaPods是用ruby实现的,因此Podfile文件的语法就是ruby的语法.podfile是一个说明文件,用以描述管理一个或者多个Xcode project的tar ...

  4. 精通Web Analytics 2.0 (9) 第七章:失败更快:爆发测试与实验的能量

    精通Web Analytics 2.0 : 用户中心科学与在线统计艺术 第七章:失败更快:爆发测试与实验的能量 欢迎来到实验和测试这个棒极了的世界! 如果Web拥有一个超越所有其他渠道的巨大优势,它就 ...

  5. 个人CKeditor的config.js配置

    /** * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. * For lic ...

  6. UVA 11235Frequent values(RMQ)

    训练指南P198 题意:给出一个非降序排列的整数数组a1, a2…… an,你的任务是对于一系列询问(i,j),回答ai, ai+1 ……aj 中出现的次数最多的次数 这题不仅学到了rmq的应用还学到 ...

  7. Linux下Nginx负载 iis问题

    使用以下NGINX配置负载IIS upstream 192.168.119.128{ server 192.168.119.1:8081; server 192.168.119.1:8082; } s ...

  8. 二、基于hadoop的nginx访问日志分析---计算日pv

    代码: # pv_day.py#!/usr/bin/env python # coding=utf-8 from mrjob.job import MRJob from nginx_accesslog ...

  9. docker run elasticsearch

    docker run -d --name=esNode1 -p 9200:9200 -p 9300:9300 elasticsearch:2.3 -Des.network.publish_host=& ...

  10. SharePoint Online 申请试用链接地址

    SharePoint Online 申请试用链接地址: https://products.office.com/en-us/business/compare-office-365-for-busine ...