CN101110030A - 基于java的数据库持久层的开发方法 - Google Patents

基于java的数据库持久层的开发方法 Download PDF

Info

Publication number
CN101110030A
CN101110030A CNA200710130907XA CN200710130907A CN101110030A CN 101110030 A CN101110030 A CN 101110030A CN A200710130907X A CNA200710130907X A CN A200710130907XA CN 200710130907 A CN200710130907 A CN 200710130907A CN 101110030 A CN101110030 A CN 101110030A
Authority
CN
China
Prior art keywords
database
java
result
jdbcutils
data base
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CNA200710130907XA
Other languages
English (en)
Inventor
彭波
刘长远
唐凯
厉莉
张宪林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
LINKAGE SYSTEM INTEGRATION CO Ltd
Original Assignee
LINKAGE SYSTEM INTEGRATION CO Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by LINKAGE SYSTEM INTEGRATION CO Ltd filed Critical LINKAGE SYSTEM INTEGRATION CO Ltd
Priority to CNA200710130907XA priority Critical patent/CN101110030A/zh
Publication of CN101110030A publication Critical patent/CN101110030A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

基于JAVA的数据库持久层开发方法:采用面向对象的设计模式,将数据库的持久层抽象出来,将Java与数据库进行交互的JDBC封装并抽象为一个单一的接口,将相同的操作封装为模板;并且应用策略模式,根据客户端的需要动态处理结果数据;并且作为客户端快速的访问数据库的一个简单的接口。所述数据库操作封装的方法是:封装了JDBC API各种数据库的操作,并模板化了JDBC中关于数据库交互中容易重复的编码;结果处理方法:根据客户端不同的需要,扩展数据结果集处理类;根据页面展示的不同需求,将结果数据集处理为List、Map或者Bean的集合返回;并辅助JDBCUtils工作,提供批量操作参数,查询语句缓存。

Description

基于JAVA的数据库持久层的开发方法
技术领域
本发明涉及数据库交互工具,特别是一种基于JAVA的数据库持久层开发方法和工具。
背景技术
随着B/S结构的系统被日益广泛的使用,Java语言以其适合网络程序开发的特性也被广泛采用。对于大型的系统,数据库操作是必不可少的,Java语言提供了一套JDBC API同数据库进行交互的工具JDBC。但是JDBC的操作和使用繁琐,开发人员常常需要编写很多代码只是为了处理数据库相关的交互,并且这个工作所涉及的代码往往大同小异。真正涉及到的数据处理工作往往很少。有鉴于此,为了提高开发效率,出现了各种基于JDBC之上的数据库持久层工具。例如Hibernate、iBatis、JDO等。但是,这些持久层工具为了适应繁多的数据库类型及通用性,不免在性能、资源上有所牺牲,在某种程度上属于重量级的持久化工具。使用其进行开发的代价大和学习曲线也是有一定的工作量。因此需要一种轻量级的,便捷的开发工具。
发明内容
本发明目的是:为了解决现有技术中存在上述问题,本发明提供了一种轻量级、便捷和具有可扩展性的基于JAVA的数据库持久层开发方法和工具JDBCUtils,尤其是利用JDBC工具对数据库的数据处理提供新的手段。
具体技术技术方案是:基于JAVA的数据库持久层的开发方法,基于JAVA的数据库持久层开发方法:采用面向对象的设计模式,将数据库的持久层抽象出来,将Java与数据库进行交互的JDBC(JDBC API)封装并抽象为一个单一的接口,将相同的操作封装为模板;并且应用策略模式,根据客户端的需要动态处理结果数据;并且作为客户端快速的访问数据库的一个简单的接口。
所述数据库操作封装的方法是:封装了JDBC API各种数据库的操作,并模板化了JDBC中关于数据库交互中容易重复的编码;结果处理方法:根据客户端不同的需要,扩展数据结果集处理类;根据页面展示的不同需求,将结果数据集处理为List、Map或者Bean的集合返回;辅助方法;辅助JDBCUtils工作,提供批量操作参数,查询语句缓存。
对于客户端来说,JDBCUtils是一个简单的接口,可以通过JDBCUtils方便快速的访问数据库。本发明屏蔽了JDBC操作的繁琐设置和结果处理操作,本发明包括数据库操作封装的方法、结果处理方法及辅助方法;相应工具框架主要分成3个部分:数据库操作封装类、结果处理类及辅助类。
本发明效果:相对与现有技术,本发明在使用过程中做到了轻量级、便捷、可扩展,圆满的解决了问题。
附图说明
图1是本发明系统中使用JDBCUtils的结构
图2是本发明JDBCUtils的设计类图
图3是本发明JDBCUtils时序图
具体实施方式
本发明基本的技术思想是利用设计模式和面向对象的概念,将数据库持久层抽象出来,把Java基本的JDBC封装并抽象为一个单一的接口,屏蔽了JDBC操作的繁琐设置和结果处理操作,将相同的操作封装为模板方法,并且应用策略模式,可以根据客户端的需要动态处理结果数据。对于客户端来说,JDBCUtils是一个简单的接口,可以通过JDBCUtils方便快速的访问数据库。在使用JDBCUtils时,直接将其部署在想应用的WEBLOGIC服务器上即可。
主要构成
参见附图2可知,JDBCUtils包含JDBCUtils、SqlBuf、BatchParam三个主要类,以及ResultSetHandler接口及其实现类ListResultSetHandler、MapListRSHandler、OptionListRSHandler、OptionsResultSetHandler、SingleStringRSHandler。
JDBCUtils类封装了和JDBC数据库做相关的方法,并持有一个ResultSetHandler接口的实例对象,在具体使用时委托具体的ResultSetHandler实现处理数据结果集。
SqlBuf和BatchParam为批量操作提供相应的支持。
使用方法:JDBCUtils的使用见如下示例。
public static void main(String[]args){
    Connection conn=DbConn.getConn(′);
    try{
       //例一
       //直接传递参数″ta″,new Integer(1)
       String sql=″SELECI*FROM tab_test WHERE a=?and b=?″;
       List list=(List)JDBCUtils.query(conn,sql,″ta″,new Integer(1),
               new ListResultSetHandler());
       list=(List)JDBCUtils.query(conn,sql,new Object[]{″tttt″,
               new Integer(1)},new ListResultSetHandler());
       //例二
       sql=″update tab_test set a=?where b=?″;
       JDBCUtils.update(conn,sql,new Object[]{″12121″,
               new Integer(2005)});
       conn.commit();
       //例子三,使用一个匿名类来直接处理ResultSet
       final StringBuffer curDate=new StringBuffer(′);
       sql=″select to_char(sysdate,′yyyymmdd′)from dual″;
       JDBCUtils.query(conn,sql,new ResultSetHandler(){
           public Object handle(ResultSet rs)throws SQLException{
               while(rs.next()){
                   curDate.append(rs.getString(1));
               }
               return null;
           }
       });
    }catch(SQLException e){
       e.printStackTrace();
    }finally{
       JDBCUtils.close(conn);
1、如以上代码示例,所有的数据库操作都通过JDBCUtils这个接口来进行,应用程序不需要关心具体的JDBC API,只需要提供符合业务逻辑的SQL和Connection即可。即通过JDBCUtils这个单一接口来与数据库交互。
2、一般JavaAPI数据库操作都会进行如下操作:获取连接,建立Statement或者PreparedStatement,设置SQL参数,执行SQL语句、返回执行结果、处理执行结果。这些操作步骤都是一致的,只是执行不同的SQL语句,设置不同的SQL参数,因此,JDBCUtls将这些步骤封装成模板方法,客户端程序只需调用,并传入不同的SQL语句和参数即可。
3、如代码示例一,将ListResultSetHandler在调用时传给JDBCUtils,那么在获取到查询的数据集ResultSet后,JDBCUtls将委托ListResultSetHandler对ResultSet中的数据进行解析,并将其存储为List结构返回给调用的客户端。如果客户端希望返回的结果集是Map,则可在调用是传如MapResultSetHandler,将结果数据集转换为Map并返回给调用客户端。
4、如示例代码三,对于非常简单的结果处理,可以直接在调用JDBCUtils时使用匿名内部类,即时对ResultSetHandler进行扩展,得到自己想要的处理结果。
5、如果是比较复杂的结果集,则可以开发一个新的类来进行扩展,这个类只需实现ResultSetHandler接口的handle方法即可。比如想将结果集处理为一个TreeMap,则可开发一个TreeMapResultSetHandler类,并在handle方法中将ResultSet数据集转换为TreeMap。新增一个类,对已有的程序代码不造成任何的影响,很好的符合了面向对象编程中的开闭原则。
6、辅助类如SqlBuf是提供SQL语句的缓存功能,用来提高效率和节省内存。BatchParam在JDBCUtils执行批量的update和insert操作时,为其提供批量参数的存储功能。

Claims (8)

1.基于JAVA的数据库持久层开发方法:其特征是采用面向对象的设计模式,将数据库的持久层抽象出来,将Java与数据库进行交互的JDBC(JDBC API)封装并抽象为一个单一的接口,将相同的操作封装为模板;并且应用策略模式,根据客户端的需要动态处理结果数据;并且作为客户端快速的访问数据库的一个简单的接口。
2.根据权利要求1所述基于JAVA的数据库持久层开发方法,其特征是所述数据库操作封装的方法是:封装了JDBC API各种数据库的操作,并模板化了JDBC中关于数据库交互中容易重复的编码;结果处理方法:根据客户端不同的需要,扩展数据结果集处理类;根据页面展示的不同需求,将结果数据集处理为List、Map或者Bean的集合返回;辅助方法;辅助JDBCUtils工作,提供批量操作参数,查询语句缓存。
3.根据权利要求1所述基于JAVA的数据库持久层开发方法,其特征是应用策略模式的方法是:所有的数据库操作都通过JDBCUtils这个接口来进行,应用程序只需要提供符合业务逻辑的SQL和Connection即可;即通过JDBCUtils这个单一接口来与数据库交互。
4.根据权利要求1所述基于JAVA的数据库持久层开发方法,其特征是JavaAPI数据库操作步骤是:获取连接,建立Statement或者PreparedStatement,设置SQL参数,执行SQL语句、返回执行结果、处理执行结果。
5.根据权利要求4所述基于JAVA的数据库持久层开发方法,其特征是JavaAPI数据库操作步骤是:
将ListResultSetHandler在调用时传给JDBCUtils,在获取到查询的数据集ResultSet后,JDBCUtls将委托ListResultSetHandler对ResultSet中的数据进行解析,并将其存储为List结构返回给调用的客户端;如果客户端要求返回的结果集是Map,则在调用MapResultSetHandler,将结果数据集转换为Map并返回给调用客户端。
6.根据权利要求4所述基于JAVA的数据库持久层开发方法,其特征是JavaAPI数据库操作步骤是:对于非常简单的结果处理,直接在调用JDBCUtils时使用匿名内部类,即时对ResultSetHandler进行扩展,得到想要的处理结果。
7.根据权利要求4所述基于JAVA的数据库持久层开发方法,其特征是JavaAPI数据库操作步骤是:对比较复杂的结果集,则开发一个新的类来进行扩展,这个类只需实现ResultSetHandler接口的handle方法。
8.根据权利要求4所述基于JAVA的数据库持久层开发方法,其特征是辅助方法是:由SqlBuf提供SQL语句的缓存功能,用来提高效率和节省内存;BatchParam在JDBCUtils执行批量的update和insert操作时,为其提供批量参数的存储功能。
CNA200710130907XA 2007-08-23 2007-08-23 基于java的数据库持久层的开发方法 Pending CN101110030A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNA200710130907XA CN101110030A (zh) 2007-08-23 2007-08-23 基于java的数据库持久层的开发方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNA200710130907XA CN101110030A (zh) 2007-08-23 2007-08-23 基于java的数据库持久层的开发方法

Publications (1)

Publication Number Publication Date
CN101110030A true CN101110030A (zh) 2008-01-23

Family

ID=39042113

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA200710130907XA Pending CN101110030A (zh) 2007-08-23 2007-08-23 基于java的数据库持久层的开发方法

Country Status (1)

Country Link
CN (1) CN101110030A (zh)

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101980213A (zh) * 2010-11-23 2011-02-23 中国科学院软件研究所 一种基于j2ee的数据持久化方法及系统
CN102110111A (zh) * 2009-12-29 2011-06-29 北京大学 数据库操作命令的处理方法及装置
CN102346774A (zh) * 2011-09-26 2012-02-08 深圳市信游天下网络科技有限公司 一种数据库操作方法及装置
CN102508673A (zh) * 2011-12-02 2012-06-20 方正国际软件有限公司 快速开发与配置平台类软件的系统及方法
CN102521409A (zh) * 2011-12-28 2012-06-27 北京人大金仓信息技术股份有限公司 一种基于通信协议的数据库数据批量更新方法
CN102521387A (zh) * 2011-12-21 2012-06-27 北京人大金仓信息技术股份有限公司 一种基于插件的数据迁移方法
CN102750382A (zh) * 2012-06-28 2012-10-24 上海寰创通信科技股份有限公司 一种用于网管系统的关系型数据查询方法
CN102799582A (zh) * 2011-05-23 2012-11-28 中兴通讯股份有限公司 提高网管自动发现业务效率的方法及装置
CN103064968A (zh) * 2012-12-31 2013-04-24 中国电子科技集团公司第十五研究所 一种基于缓存的标准化数据打包方法
CN104572047A (zh) * 2013-10-18 2015-04-29 镇江鼎拓科技信息有限公司 一种基于Apache Tomcat的WEB数据库开发组件方法
CN105302565A (zh) * 2015-11-10 2016-02-03 河海大学 一种基于Java的自带连接池管理的数据持久化组件
WO2016177027A1 (zh) * 2015-05-06 2016-11-10 华为技术有限公司 批量数据查询方法和装置
CN108255478A (zh) * 2018-01-19 2018-07-06 上海锐垚科技有限公司 一种标签式模板开发方法
CN109753533A (zh) * 2018-12-28 2019-05-14 北京东方国信科技股份有限公司 一种多源关系型数据库客户端开发方法及装置
CN110007900A (zh) * 2019-02-13 2019-07-12 平安科技(深圳)有限公司 工具类调用方法、系统、计算机设备和存储介质
CN110688398A (zh) * 2019-08-21 2020-01-14 西藏自治区藏医院(西藏自治区藏医药研究院) 一种藏历天文历算的演示方法及系统
CN111611267A (zh) * 2020-04-30 2020-09-01 北京航天云路有限公司 一种将数据库数据转换为json对象配置可视化图表的方法
CN114217899A (zh) * 2021-12-15 2022-03-22 平安国际智慧城市科技股份有限公司 数据持久化方法、装置、电子设备及存储介质
CN114356302A (zh) * 2022-03-15 2022-04-15 江苏数兑科技有限公司 一种基于Gremlin语言的持久层优化方法

Cited By (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102110111A (zh) * 2009-12-29 2011-06-29 北京大学 数据库操作命令的处理方法及装置
CN101980213A (zh) * 2010-11-23 2011-02-23 中国科学院软件研究所 一种基于j2ee的数据持久化方法及系统
CN101980213B (zh) * 2010-11-23 2012-09-19 中国科学院软件研究所 一种基于j2ee的数据持久化方法及系统
CN102799582A (zh) * 2011-05-23 2012-11-28 中兴通讯股份有限公司 提高网管自动发现业务效率的方法及装置
CN102799582B (zh) * 2011-05-23 2015-06-03 中兴通讯股份有限公司 提高网管自动发现业务效率的方法及装置
CN102346774A (zh) * 2011-09-26 2012-02-08 深圳市信游天下网络科技有限公司 一种数据库操作方法及装置
CN102346774B (zh) * 2011-09-26 2013-09-18 深圳市信游天下网络科技有限公司 一种数据库操作方法
CN102508673A (zh) * 2011-12-02 2012-06-20 方正国际软件有限公司 快速开发与配置平台类软件的系统及方法
CN102508673B (zh) * 2011-12-02 2015-07-29 方正国际软件有限公司 快速开发与配置平台类软件的系统及方法
CN102521387A (zh) * 2011-12-21 2012-06-27 北京人大金仓信息技术股份有限公司 一种基于插件的数据迁移方法
CN102521409A (zh) * 2011-12-28 2012-06-27 北京人大金仓信息技术股份有限公司 一种基于通信协议的数据库数据批量更新方法
CN102750382A (zh) * 2012-06-28 2012-10-24 上海寰创通信科技股份有限公司 一种用于网管系统的关系型数据查询方法
CN102750382B (zh) * 2012-06-28 2016-08-03 上海寰创通信科技股份有限公司 一种用于网管系统的关系型数据查询方法
CN103064968A (zh) * 2012-12-31 2013-04-24 中国电子科技集团公司第十五研究所 一种基于缓存的标准化数据打包方法
CN104572047A (zh) * 2013-10-18 2015-04-29 镇江鼎拓科技信息有限公司 一种基于Apache Tomcat的WEB数据库开发组件方法
US10678789B2 (en) 2015-05-06 2020-06-09 Huawei Technologies Co., Ltd. Batch data query method and apparatus
WO2016177027A1 (zh) * 2015-05-06 2016-11-10 华为技术有限公司 批量数据查询方法和装置
CN105302565A (zh) * 2015-11-10 2016-02-03 河海大学 一种基于Java的自带连接池管理的数据持久化组件
CN108255478A (zh) * 2018-01-19 2018-07-06 上海锐垚科技有限公司 一种标签式模板开发方法
CN109753533A (zh) * 2018-12-28 2019-05-14 北京东方国信科技股份有限公司 一种多源关系型数据库客户端开发方法及装置
CN110007900A (zh) * 2019-02-13 2019-07-12 平安科技(深圳)有限公司 工具类调用方法、系统、计算机设备和存储介质
CN110688398A (zh) * 2019-08-21 2020-01-14 西藏自治区藏医院(西藏自治区藏医药研究院) 一种藏历天文历算的演示方法及系统
CN110688398B (zh) * 2019-08-21 2023-10-13 西藏自治区藏医院(西藏自治区藏医药研究院) 一种藏历天文历算的演示方法及系统
CN111611267A (zh) * 2020-04-30 2020-09-01 北京航天云路有限公司 一种将数据库数据转换为json对象配置可视化图表的方法
CN111611267B (zh) * 2020-04-30 2024-04-05 北京航天云路有限公司 一种将数据库数据转换为json对象配置可视化图表的方法
CN114217899A (zh) * 2021-12-15 2022-03-22 平安国际智慧城市科技股份有限公司 数据持久化方法、装置、电子设备及存储介质
CN114217899B (zh) * 2021-12-15 2023-10-17 深圳平安智慧医健科技有限公司 数据持久化方法、装置、电子设备及存储介质
CN114356302A (zh) * 2022-03-15 2022-04-15 江苏数兑科技有限公司 一种基于Gremlin语言的持久层优化方法

Similar Documents

Publication Publication Date Title
CN101110030A (zh) 基于java的数据库持久层的开发方法
US7089566B1 (en) Method for accessing object linking-embedding database data via JAVA database connectivity
US7284010B2 (en) System and method for storing and retrieving a field of a user defined type outside of a database store in which the type is defined
US6314430B1 (en) System and method for accessing a database from a task written in an object-oriented programming language
US7536409B2 (en) Having a single set of object relational mappings across different instances of the same schemas
US6754670B1 (en) Mapping relational tables to object oriented classes
CA2483963C (en) A method, computer program and computer for accessing data in an environment of multiple data repositories
WO1999052044A1 (en) A system and method for accessing data stores as objects
US20020059259A1 (en) Using database management system's infrastructure to invoke a stored procedure for creating and preparing a database application
US20060047780A1 (en) Method and apparatus for web-based, schema-driven application-server and client-interface package using a generalized, data-object format and asynchronous communication methods without the use of a markup language.
US7174326B2 (en) Database system providing methodology for prepared statement cloning
JPH0644128A (ja) オブジェクト指向プログラミングを支援するデータベース管理システム及び方法
EP1457878B1 (en) Automatic generation of an object model from a dimensional model
JP2006012155A (ja) ユーザ定義型の指定されたメンバを遅延フェッチするシステムおよび方法
US6542900B1 (en) Method and apparatus for distributed object mapping in a java language environment
US6658426B1 (en) Object-oriented database abstraction and statement generation
EP1393171A2 (en) Method and system for incorporating legacy applications into a distributed data processing environment
US6473807B1 (en) System for invocation of CICS programs as database stored procedures
US9772951B2 (en) Preemptive guest merging for virtualization hypervisors
US6424974B1 (en) Storing P-code in a database
US7136872B2 (en) Method, system, and article of manufacture for transferring structured data between different data stores
US20060242167A1 (en) Object based test library for WinFS data model
CN106201542B (zh) 一种wof快速开发平台
US6938052B2 (en) Access to server resources from heterogeneous platforms
Bai Query Data from Databases

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C12 Rejection of a patent application after its publication
RJ01 Rejection of invention patent application after publication