项目背景

这是我的毕业设计作品。上次的generalDAO,是为了演示通过反射机制获取字段信息和拼接SQL语句的方式访问数据库。实现的功能较弱,并且项目的可扩展性不强。这次再对数据访问进行分析和抽象,完成了syDataProcess项目。

设计过程

在generalDAO中,获取信息和拼接字符串是在一起完成的使结构混乱。首先应该分开这两种处理过程

1、在底层实现数据库访问,向上提供统一的接口

2、更高层实现通过反射获取VO类信息,并调用统一的数据库访问接口

分层

首先需要考虑的一个问题是如何对项目进行分层,保证程序具有良好的可扩展性。程序分为数据访问层,Cache层,VO处理层。

接口

下面定义接口。为了使数据库访问变得方便,且具有更高的灵活性。访问接口应该具有基本的增、删、改、查功能,但是只提供这些功能是不够灵活的,所以要提供SQL语句执行的功能。

DAOBase接口是整个DataProcess系统的基础,DAOBase接口可以在不同层上进行扩展,为不同的层定义更多功能。

项目中使用Map代表一条数据,其中Map的key表示字段名,value表示值。用List>表示一组数据。参数table表示表名的字符串,condition是表示删除或查询条件的字符串。

数据访问层

数据访问层包含一个对DAOBase的抽象类DAODataAccess,和对各种不同数据库访问的实现

数据缓存层

数据库访问层用支持MemCached协议的MemCached和Tokyo Tyrant两种服务器。首先定义一个客户端接口,实现访问不同的客户端

实际应用中,需要有一个控制策略,来控制什么时候向缓存服务器存入数据,什么时候取出数据。不同的应用应该有不同的控制策略,但是这些控制策略具有一些共同的东西,比如都具有对管理器的引用,对数据访问层的引用,以及所有控制策略都是基于在进行调用DAOBase中功能进行的操作等。所以就可以定义一个抽象的控制器类,不同的控制策略共同实现这个抽象类

VO处理层

这一层处理过程是接受用户传入的一个VO类的类名,通过反射机制判断类中的方法,获得数据库表中的字段信息。再通过调用DataBase定义的方法,完成对VO对象的增、删、改、查操作。

由于处理过程跟我以前写的一篇文章类似,这里不做过多叙述。

(generalDAO:http://www.cnblogs.com/S-E-P/archive/2010/09/20/2045053.html)

目前基本的功能已经完成,sy_DataProcess.jar包含数据访问层和缓存层,sy_DataProcessVO.jar包含VO处理层

项目地址:http://code.google.com/p/sy-data-process/

API参考文档:

http://sy-data-process.googlecode.com/svn/trunk/DataProcess/doc/index.html(syDataProcess.jar)

http://sy-data-process.googlecode.com/svn/trunk/DataProcessVO/doc/index.html(syDataProcessVO.jar)

获得源码或技术讨论请 E-mail:sy.ExtremeProgrammer@gmail.com

转载于:https://www.cnblogs.com/S-E-P/archive/2011/05/06/2045048.html

syDataProcess项目相关推荐

  1. 在k8s中使用gradle构建java web项目镜像Dockerfile

    在k8s中使用gradle构建java web项目镜像Dockerfile FROM gradle:6-jdk8 AS build COPY --chown=gradle:gradle . /home ...

  2. Dockerfile springboot项目拿走即用,将yml配置文件从外部挂入容器

    Dockerfile 将springboot项目jar包打成镜像,并将yml配置文件外挂. # 以一个镜像为基础,在其上进行定制.就像我们之前运行了一个 nginx 镜像的容器,再进行修改一样,基础镜 ...

  3. SpringBoot项目使用nacos,kotlin使用nacos,java项目使用nacos,gradle项目使用nacos,maven项目使用nacos

    SpringBoot项目使用nacos kotlin demo见Gitte 一.引入依赖 提示:这里推荐使用2.2.3版本,springboot与nacos的依赖需要版本相同,否则会报错. maven ...

  4. Gradle 将项目publish到Nexus,Kotlin将项目发布到nexus,springboot项目发布到maven仓库

    示例见:Gitte 公仓设置 在项目中添加maven-publish的插件 plugins {kotlin("jvm") version "1.3.72"kot ...

  5. springboot项目使用junit4进行单元测试,maven项目使用junit4进行单元测试

    首先,maven项目中引入依赖 <dependency><groupId>junit</groupId><artifactId>junit</ar ...

  6. IDEA设置单个文件、单个包、单个项目的编码格式

    IDEA设置单个文件.单个包.单个项目的编码格式 File-> Settings-> File Enclodings 选择编码格式,确定即可. 注意:此处的编码格式设定以后,该包已经存在的 ...

  7. spring boot项目 中止运行 最常用的几种方法

    spring boot项目 中止运行 最常用的几种方法: 1. 调用接口,停止应用上下文 @RestController public class ShutdownController impleme ...

  8. 两步完成项目定时启动,java项目定时启动

    两步完成项目定时设置: 在需要定时启动或运行的方法上面加上注解@Scheduled //当天只跑一次 @Scheduled(cron = "0 40 21 * * ?") 在启动类 ...

  9. Myeclipse中项目没有代码错误提示,jsp页面无编译迹象?如何解决

    在使用Myeclipse开发项目时,发现jsp页面中嵌入的java代码没有编译的迹象,错误的get方法没有报错,没有报错信息我们如何知道我们开发的内容是正确的呢? 接下来就演示一下如何解决

  10. Myeclipse中修改项目默认编码还是乱码?一步永久解决!

    在myeclipse中修改默认编码后发现项目还是乱码? 点击Windows选择Preferences 如下图

最新文章

  1. 吊打 ThreadLocal,谈谈FastThreadLocal为啥能这么快?
  2. 在自行车论坛看到的有趣帖子
  3. pyinstaller python3.7_解决python3.7安装好pyinstaller却不能使用的问题
  4. Java Ajax: DWR
  5. 初步了解中文编程工具易语言
  6. maven netty 配置_springboot2.3手册:5分钟用Netty搭建高性能异步WebSocket服务
  7. CSS左中右布局,规范案例
  8. IAR切BANK--程序中的使用
  9. Win10 UWP vs add github
  10. 掌握 cinder-scheduler 调度逻辑 - 每天5分钟玩转 OpenStack(48)
  11. BZOJ 3238 【AHOI2013】 差异
  12. Axure9修改汉化包解决”用例“中”匹配所有“异常的问题
  13. Udemy上Gephi教程笔记2
  14. 浏览器与输入法——用户入口的争夺
  15. 如何用Python批量打印PDF文档、Word文档、Excel表格、图片呢?
  16. 将域名从易名中国(www.ename.cn)转移到中国万网(www.net.cn)
  17. 小猫钓鱼纸牌游戏java_java实现纸牌游戏-小猫钓鱼算法
  18. cv2读出来的图片的颜色通道是bgr
  19. Power BI 精美的可视化图表
  20. Acwing 1227. 分巧克力

热门文章

  1. 耒阳计算机学校,耒阳县系统分析师_科泰计算机学校
  2. mysql主键和聚簇索引_MYSQL:聚簇索引和主键索引
  3. camunda 流程执行追踪_从Activiti分裂而来的camunda BPM
  4. C#调用DLL函数方法
  5. python三大神器之fabric
  6. 2019年春节加班机暴增 人潮多考验桃园机场准点率
  7. java-web学习笔记(第一章)
  8. 全局唯一标识符 (GUID)
  9. Android几种layout(布局)的区别
  10. DBA和开发同事的一些代沟(一)