syDataProcess项目
项目背景
这是我的毕业设计作品。上次的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项目相关推荐
- 在k8s中使用gradle构建java web项目镜像Dockerfile
在k8s中使用gradle构建java web项目镜像Dockerfile FROM gradle:6-jdk8 AS build COPY --chown=gradle:gradle . /home ...
- Dockerfile springboot项目拿走即用,将yml配置文件从外部挂入容器
Dockerfile 将springboot项目jar包打成镜像,并将yml配置文件外挂. # 以一个镜像为基础,在其上进行定制.就像我们之前运行了一个 nginx 镜像的容器,再进行修改一样,基础镜 ...
- SpringBoot项目使用nacos,kotlin使用nacos,java项目使用nacos,gradle项目使用nacos,maven项目使用nacos
SpringBoot项目使用nacos kotlin demo见Gitte 一.引入依赖 提示:这里推荐使用2.2.3版本,springboot与nacos的依赖需要版本相同,否则会报错. maven ...
- Gradle 将项目publish到Nexus,Kotlin将项目发布到nexus,springboot项目发布到maven仓库
示例见:Gitte 公仓设置 在项目中添加maven-publish的插件 plugins {kotlin("jvm") version "1.3.72"kot ...
- springboot项目使用junit4进行单元测试,maven项目使用junit4进行单元测试
首先,maven项目中引入依赖 <dependency><groupId>junit</groupId><artifactId>junit</ar ...
- IDEA设置单个文件、单个包、单个项目的编码格式
IDEA设置单个文件.单个包.单个项目的编码格式 File-> Settings-> File Enclodings 选择编码格式,确定即可. 注意:此处的编码格式设定以后,该包已经存在的 ...
- spring boot项目 中止运行 最常用的几种方法
spring boot项目 中止运行 最常用的几种方法: 1. 调用接口,停止应用上下文 @RestController public class ShutdownController impleme ...
- 两步完成项目定时启动,java项目定时启动
两步完成项目定时设置: 在需要定时启动或运行的方法上面加上注解@Scheduled //当天只跑一次 @Scheduled(cron = "0 40 21 * * ?") 在启动类 ...
- Myeclipse中项目没有代码错误提示,jsp页面无编译迹象?如何解决
在使用Myeclipse开发项目时,发现jsp页面中嵌入的java代码没有编译的迹象,错误的get方法没有报错,没有报错信息我们如何知道我们开发的内容是正确的呢? 接下来就演示一下如何解决
- Myeclipse中修改项目默认编码还是乱码?一步永久解决!
在myeclipse中修改默认编码后发现项目还是乱码? 点击Windows选择Preferences 如下图
最新文章
- 吊打 ThreadLocal,谈谈FastThreadLocal为啥能这么快?
- 在自行车论坛看到的有趣帖子
- pyinstaller python3.7_解决python3.7安装好pyinstaller却不能使用的问题
- Java Ajax: DWR
- 初步了解中文编程工具易语言
- maven netty 配置_springboot2.3手册:5分钟用Netty搭建高性能异步WebSocket服务
- CSS左中右布局,规范案例
- IAR切BANK--程序中的使用
- Win10 UWP vs add github
- 掌握 cinder-scheduler 调度逻辑 - 每天5分钟玩转 OpenStack(48)
- BZOJ 3238 【AHOI2013】 差异
- Axure9修改汉化包解决”用例“中”匹配所有“异常的问题
- Udemy上Gephi教程笔记2
- 浏览器与输入法——用户入口的争夺
- 如何用Python批量打印PDF文档、Word文档、Excel表格、图片呢?
- 将域名从易名中国(www.ename.cn)转移到中国万网(www.net.cn)
- 小猫钓鱼纸牌游戏java_java实现纸牌游戏-小猫钓鱼算法
- cv2读出来的图片的颜色通道是bgr
- Power BI 精美的可视化图表
- Acwing 1227. 分巧克力