JAVA数据库访问控制框架设计与使用

一、引言

        这个数据库访问控制框架工程名为dbmanager,之所以想写这个框架,最主要的一个原因是,目前在JAVA开发中通常使用的第三方开源框架,如:Spring、Hibernat等,虽然功能强大且拥有很好的性能,但在具体使用的时候个人感觉总是不那么方便,而且这些第三方开源框架在使用时有很多规则,程序员只有很清楚每一个规则且按这些规则来编程,这时这些框架才能达到它们设计的目标,否则性能很差不说,程序运行时还可能会出现想不到的结果。我个人正在使用Hibernate这一框架,对这一点深有感触,所以特别设计并实现这个框架。
        这个框架目前是第一版,只支持MYSQL数据库,详细版本号为1.1.8,在未来两周内,我还将继续扩展这一框架,使其可以支持SQL Server、Oracle、Sybase、DB2数据库,同时框架版本也将不断升级。
        这一框架基于最原始的JDBC实现,当然像Spring、Hibernate这些第三方开源框架最终也是通过JDBC实现最终与数据库交互的功能。框架中实现有Pool功能,即数据库连接池。这一框架的数据库连接池内置实现对已有数据库连接的连接保持,不会像Hibernate那样,你要另外想办法保持数据库的连接,我在之前参与的一个项目中就遇到过。同时框架会自动对所有的数据库连接进行管理,在配置的数据库总的可用连接数范围内,内置实现各个数据库的可用连接数,如果程序需要的连接超过了数据库的最大连接数范围,程序员也不用担心,这个连接池会自动释放暂时不用的连接并创建新的连接,只是这样会降低框架的运行效率。
        这一框架内置实现对分库应用的支持,不像Hibernate等框架,如果要使用并管理多个数据库,还需要另外写配置和代码才能实现。好了,废话不多说,先来看看这一框架的整体结构。

二、框架结构

        本框架的结构分为五个部分,第一部分是数据连接,包括数据库连接、数据库连接池、数据库操作三个类。第二部分是数据实体,包括实体接口、抽象类、基本实现类等。第三部分是SQL语句构造器,包括SQL语句构造接口、抽象类、MYSQL数据库构造类、MYSQL数据库检测类等。第四部分是数据操作器,包括操作接口、抽象类、基础操作类等。第五个部分是一些常用的工具集,包括日期工具、字符串工具、XML读写工具、日志工具、加密/解密工具等。下面我们先看第一部分,数据连接。本节只对前四个部分进行说明,第五部分(常用工具集)在此省略。

2.1、数据连接

        数据连接部分包括数据库连接类(SQLBaseConn)、数据库连接器(SQLBasePool)和数据库操作(SQLBase)三个类,如上图所示。通常来说程序员在使用此框架时根本不会接触到这三个类,所以这三个类的详细说明就不细说了。通过这三个类,本框架实现数据库连接池管理、数据库连接保持、分库应用的支持、数据库操作等最基本的功能。

2.2、数据实体

        数据实体部分包括实体接口、抽象类、基本实现类等,具体结构见下图:
        IBaseData接口是数据实体类的基本接口,定义一些基本操作方法,AbstractBaseData抽象类实现一些最基本的接口方法,如:获取实体字段、取指定字段的数值、判断字段是否存在等,而DatabaseInfo则是一个具体的实体类,在这个实体类中定义字段,并实现SetFieldValue方法,给实体的字段赋值。
        需要特别说明的是,DatabaseInfo实体类的包名要遵循一个规则,即包名的最后一部分就是数据库名,如在本框架中,DatabaseInfo实体类的包名为:com.huang.jacky.basedata,这里的basedata就是数据库名,同时,和Hibernate相似,实体类名也就是数据表名,如DatabaseInfo实体类,就是在basedata数据库中的DatabaseInfo表。
        DatabaseInfo表结构如下图:
        字段说明:DBSN:数据库序列号,DBName:数据库名,CreateDates:创建日期,DBDirs:数据库所在位置,DBStyle:数据库类型,默认1为基础数据库,其它值由程序员自己定义,DBDriver:数据库驱动,DBURL:数据库连接串,请看如下示例:
        本框架在使用时需要在SRC目录下定义一个名为dbcfg.xml的连接配置文件,用于指示框架如何连接到基础数据库basedata,如下图:
        其中,DatabaseConfig指明基础数据库名,JDBCNAME指明数据库驱动,JDBCURL指明数据库连接串,SQLCOUNT指明数据库允许的最大连接数。其中JDBCURL数据中,用户名和密码之间的&符号由于DOM解析的限制,在此用三个_替代,即___。

2.3、SQL构造器

        SQL语句构造器,包括SQL语句构造器接口、构造器抽象类、MYSQL数据库构造类、数据库检测接口、数据检测抽象类,MYSQL数据库检测类等,结构如下图:
        SQL构造器使用数据库检测器检测数据表的实际字段并生成插入、修改、删除SQL语句和查询用的字段列表,这一过程在构造时执行,因此在运行时可大大提高框架的运行效率。

2.4、数据操作器

        数据操作器包括操作接口、抽象类、基础操作类等,结构如下图:
        AbstractBaseDataOpt抽象类实现基本的查询操作,BaseTableOpt类则在抽象的基类的基础上实现具体的增、删、改操作,并实现用指定的SQL语句执行操作。在所有的数据库操作执行时通过SQLBase对象进行,且使用预处理SQL方式(即?号参数),这样可在框架运行时提高运行效率。
        在使用本框架时,如果没有特殊的需求,基本可以不用从AbstractBaseDataOpt抽象类或BaseTableOpt类来扩展数据操作实现,而且本人建议如果有扩展需求,最好从BaseTableOpt类开扩展功能。
       使用数据操作器进行增、删、改操作只要调用相应的方法即可,在执行查询操作时,QueryData函数有两个参数,参数列表(condList)和值列表(valuList)。本框架的一个重要规则是,参数列表的每个元素要根据实际的查询条件进行拆分,同时值列表的元素顺序要与参数列表元素的顺序一致,下面举例说明。
       假设有一个查询条件“((field1>=1) and (field2<=2)) or ((field3>=3) and (field4<=4))”,那么拆分后的参数列表有四个元素,分别是((field1>=#)and,(field2<=#))or,((field3>=#)and,(field4<=#)),值列表的四个元素分别是1、2、3、4。
        在这里#号会被框架解析为?号,如果有后续的查询条件(and/or)则在#号后加入and/or,如果有括弧,则括弧的位置与实际的SQL查询条件的位置相同,比如上面的((field1>=1) and,在组织成查询条件元素时前面两个括弧的位置不变,为((field1>=,之后跟一个#号,而这个条件后面还有查询条件,所以加上) and,就形成了第一个查询条件元素((field1>=#)and。最后一个查询条件以#号结束,如果有括弧则加上括弧,如上例中的第四个查询条件元素(field4<=#))。
        以上的条件规则在本框架的所有需要用到查询条件的地方都通用,同时本框架还支持数据库的分页查询。好了,就先写到这了,如果大家有什么疑问可随时联系我。本框架的JAR文件请大家到我的CSDN资源上下载。

JAVA数据库访问控制框架设计与使用相关推荐

  1. java mysql框架_盘点 Java 数据库访问框架——究竟哪个更适合你

    本文将带您浏览和比较最受欢迎Java数据库访问框架(DAO层).假设您正在开发一个Java程序,有许多办法可以让您的应用连上数据库.下面会列举各数据库访问框架的适用场景,相信能够帮您选到适合项目的开发 ...

  2. Java反射:框架设计的灵魂

    Java反射:框架设计的灵魂 框架:办成品软件,可以在框架的基础上进行开发 反射:将类的各个部分封装成对象,这就是反射机制 反射的好处 在程序运行的过程中,操作这些对象 可以降低程序的耦合性,提高程序 ...

  3. 后端:最受欢迎Java数据库访问框架(DAO层)

    来自:覃佑桦 | 责编:乐乐 链接:dzone.com/articles/what-java-dao-layer-is-best-for-your-project 本文将带您浏览和比较最受欢迎Java ...

  4. dao层和service层和control_最受欢迎Java数据库访问框架(DAO层)

    本文将带您浏览和比较最受欢迎Java数据库访问框架(DAO层). 假设您正在开发一个Java程序,有许多办法可以让您的应用连上数据库.下面会列举各数据库访问框架的适用场景,相信能够帮您选到适合项目的开 ...

  5. Java 反射:框架设计的灵魂

    作者 l 会点代码的大叔(CodeDaShu) 在学习 Java 反射之前,先让我们看看这几个概念. 01 解释型语言和编译型语言 解释型语言:不需要编译,在运行的时候逐行翻译解释:修改代码时可以直接 ...

  6. java 简单 框架_java简单框架设计

    设计框架包可以作为一个工具给大家用,需要有完全不同设计思路给出来,不同于我们去做一个web服务.网站. 或者一个业务微服务,需要从原来使用视角转换成一个构建者视角. 框架或者工具,更多是框架来管理或者 ...

  7. Java 签章操作的设计与实现

    1 说明 本文主要讲解使用Java和SpringBoot框架设计实现对PDF的签章操作.实现对PDF的签章操作不是简单的找个图片贴到PDF上即可,而是需要申请数字证书才能对PDF签章,否则无法验证签章 ...

  8. java计算机毕业设计框架的企业机械设备智能管理系统的设计与实现源码+数据库+lw文档+系统

    java计算机毕业设计框架的企业机械设备智能管理系统的设计与实现源码+数据库+lw文档+系统 java计算机毕业设计框架的企业机械设备智能管理系统的设计与实现源码+数据库+lw文档+系统 本源码技术栈 ...

  9. 计算机毕业设计JAVA基于Bootstrap框架的读书网站设计与实现mybatis+源码+调试部署+系统+数据库+lw

    计算机毕业设计JAVA基于Bootstrap框架的读书网站设计与实现mybatis+源码+调试部署+系统+数据库+lw 计算机毕业设计JAVA基于Bootstrap框架的读书网站设计与实现mybati ...

  10. 基于java基于Bootstrap框架的读书网站设计与实现计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署

    基于java基于Bootstrap框架的读书网站设计与实现计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署 基于java基于Bootstrap框架的读书网站设计与实现计算机毕业设计源码+ ...

最新文章

  1. 应用的大数据:医疗保健的经济学
  2. ipa去除时间锁_Java中的锁以及sychronized实现机制(十)
  3. FastDFS服务器搭建
  4. 现在没有可用的软件包 *** ,但是它被其它的软件包引用了 和 E: 无法定位软件包 ***问题解决(思路清晰干货)
  5. BZOJ 3207: 花神的嘲讽计划Ⅰ
  6. fatal error LNK1104: 无法打开文件“***.lib“ 解决方法
  7. Eclipse 中Access restriction: The type ‘XXX’ is not API
  8. c语言为什么不能自动free,求大神帮忙看看 为什么cfree没有报错但是就是运行不了...
  9. SpringSecurity实战(五)-认证流程源码分析
  10. 祝贺!周润发获颁授荣誉博士
  11. 思科模拟器实现不同网段主机互ping
  12. OPENMP学习笔记(1)——简介,模型,运行
  13. 攻略(一):骑马与砍杀-潘德的预言mod快速自立攻略
  14. SM2算法与原生RSA、ECDSA算法的比较
  15. [人人]在大学的第二个总结
  16. 一个,两个,蓝精灵 (10 分)(Python)
  17. (一)ArcMap基础——ArcMap的窗口组成
  18. keil怎么将c语言烧写软件下载,Keil-MDK编译完成后自动烧写下载
  19. 大学生对AI的看法调查
  20. spatialreg | 空间计量模型的结果解读——直接效应和间接效应

热门文章

  1. 一键获取系统特殊权限 - TrustedInstaller权限,可以直接修改hosts等系统文件
  2. 日常办公中的40+电子签场景,覆盖核心业务及岗位签署需求
  3. 官方VM tools下载地址
  4. 2021“中兴捧月“图灵赛道总结
  5. 2019中兴捧月·初赛心得
  6. 度中心性(degree)、接近中心性(closeness)和中介中心性(betweenness)的理解
  7. 引入阿里icon库的方法(font-class 引用)
  8. android 高仿国美,iOS高仿国美、二次元应用、点赞喷射动画、电影筛选页等源码...
  9. Thinkpad E431 解决无线网卡无法开启
  10. 巴比特 | 元宇宙每日必读:红杉中国“雇”了一位虚拟员工,自称每秒可看百份商业计划书,期待时薪为0.68元...