本发明专利技术公开了一种基于J2EE的数据持久化方法和系统,其方法包括:1)用与底层数据库相关的注释语言对待持久化的Java类进行映射元数据标记;2)构建待持久化Java类对象,对对象的属性值进行赋值;3)构建Java实体对象查询树;4)以创建的待持久化Java类对象和Java实体对象查询树为参数,调用持久化接口进行持久化操作。系统包括数据类型适配器、查询语言解析器和操作语言解析器。本发明专利技术的方法和系统解决了Java实体对象与底层数据库的“阻抗不匹配”,屏蔽了异构数据库对信息系统所提供接口的差异,不依赖于任何脚本语言,整个过程完全是Java接口调用,降低了持久化层的开发难度。
【技术实现步骤摘要】
本专利技术涉及一种在J2EE平台下异构数据库环境中通用的数据持久化方法及系 统,目标是提高小型信息系统持久层的开发效率、降低在异构数据库之间的迁移成本。
技术介绍
作为信息持久化的主要手段,数据库已经成为绝大多数信息系统中不可或缺的一 部分。为了满足各种各样的数据库应用需求,大量的异构数据库应运而生。目前在信息系 统中使用较为广泛的异构数据库有 关系型数据库建立在关系数据模型上,将数据分解成为二维数据表进行存储。 关系数据库具有数据结构化强、数据独立性大、数据冗余较多等特点,其对于数据读、写的 表现比较均衡。 对象数据库将面向对象的方法和数据库技术结合起来,使数据库的分析、设计 最大程度地与人们对客观世界的认识相一致,其读写的表现比较均衡,但整体性能要比关 系数据库稍逊一筹。XML数据库建立在XML格式文档的基础上,能够对半结构化和具有一定层次结 构的数据进行有效的存取管理,特别适用于管理和查询网络数据,其读写的表现比较均衡, 整体性能要比对象数据库更差,但是由于XML格式信息更适于在网络中传输并且其数据结 构便于人类理解,XML数据库仍然在数据库的使用中占有一席之地。 目录数据库一种基于目录服务的数据库,对于读取操作做了特别的优化,因而 更适用于读数据比写数据次数大的多的信息系统。此外,随着Internet的广泛普及,Web信息系统的数量突飞猛增。Web服务器作为 连接客户端和数据库服务器的一个中间层,既要对用户的访问请求进行分析和处理,又要 和数据库进行数据交互。为了实现Web服务器的模块化和层次化,系统设计开发时都会把 Web服务器划分为负责分析和处理用户访问请求的业务逻辑层以及负责与数据库服务器进 行交互的数据持久层。于是,如何使信息系统的数据持久层方便、快捷、高效的与各种异构 数据库之间进行交互成为了 一个重要的研究课题。为了方便用户在J2EE平台上实现对数据库的访问,J2EE推出了一系列访问数 据库的标准接口,如 Java Database Connectivity (Oracle Corporation. JDBC. http://java. sun. com/products/jdbc/overview. html)、Java Naming and Directory Interface(OracleCorporation. JNDI. http://java. sun. com/products/jndi/ overview, html)等。使用这些接口有很多的好处首先,利用标准接口开发的信息系统不 但可以跨平台运行,更可以在同构数据库之间不受数据库供应商的限制;其次,标准接口通 常都使用该种数据库的主流语言,并保留了其查询语言的全部能力,允许用户调用存储过 程、执行特殊自定义查询甚至使用与数据库相关的特性操作;最后,直接使用标准接口会获 得很好的操作性能。然而直接使用标准接口也会有很多不便一、开发人员必须确保数据库 资源得到了妥善的处理。其中最显著的问题是能否有效的管理数据库连接。在打开并使用完数据库连接之后(或者遇到异常时)必须确保将其正确的关闭,否则就有可能耗尽数据 库连接从而导致系统崩溃。二、直接使用标准接口编程意味着开发人员需要在代码中构造 与数据库相关的查询语句,一旦数据模型发生了变化,那么必须手工修改四处散布的查询 语句以及代码。三、大多数标准接口所提供的API方法都可能抛出已检测的DBExc印tion, 开发人员不仅要保证捕获这些异常,而且还要保证一旦异常抛出会执行相应的清除工作。 此外,DBException的异常处理逻辑往往非常相似,导致持久层中会出现大量重复代码, 降低了系统的可维护性。四、直接使用标准接口往往会导致应用程序与数据源之间的高 度耦合,而高耦合、高重复是使得程序难以测试的两个主要原因(J. B. Rainberger,Scott Stirling. JUnit Recipes :Practical Methods for Programmer Testing. Manning Publications Co. ,2005.)。鉴于直接使用标准数据库接口的诸多弊端,一些持久化中间件试图在标准接口之 上提供一层轻量级的封装来解决这些问题(汪萌,曲俊华.基于Hibernate技术的持久层 解决方案及实现.计算机系统应用,2010,(03).)。这些中间件为用户隐藏了使用标准 接口的大部分细节,带来了透明的数据持久化体验。相对于直接使用标准接口,使用持久化 中间件可以帮助开发人员节省大量的时间。但持久化中间件也存在一个重要的缺陷,即只 提供了对于某一个标准接口的封装,使用这些中间件进行数据持久化仍然会引起信息系统 与底层的数据库较高的耦合度,如果信息系统由于某种原因要将现有数据库更换为另一种 异构数据库(如从关系数据库变成目录数据库),则需要付出较为沉重的代价。更重量级的J2EE持久层框架弥补了持久层中间件在异构数据库集成方面 的不足,它们符合目前J2EE平台的持久化规范,并且可以集成各种异构数据库的标 准访问接口。然而这些功能强大的持久层框架往往非常复杂而且体积庞大。例如 DataNucleus(DaanucleusCommunity. Daanucleus. http://www.datanucleus. org/. ) 2. 1. ORelease的核心JAR包的大小就接近2MB。不仅如此,要想使用DataNucleus 的全部功能还需要许多额外的JAR包,如asm、ehcache, poi等,共计19. 5MB。如此重量级 的持久化框架对于一些小型Web信息系统来说实在过于庞大,程序员要熟练掌握类似的持 久化框架并发挥它的优势也绝非易事。综上,J2EE平台下的已有数据持久化方法的缺点如下第一,标准接口功能强大却难以使用;第二,简单的持久化中间件虽然在一定程度上简化了标准接口的使用,但仍然因 为与数据库类型高度耦合而受到了限制;第三,功能强大的持久化框架可以让我们彻底摆脱对于底层数据库的考虑、专心 于业务逻辑的处理,却结构复杂且难于掌握。针对需要快速开发的小型信息系统,需要一种简单易用、能够低成本的在各种异 构数据库之间进行迁移的J2EE数据持久化方法。该方法接口明确、易于开发、所有操作 完全符合面向对象的思想、能够集成可通过J2EE标准接口访问的多种异构数据库、只有很 少或者没有第三方依赖、能够通过对Java实体对象进行CRUD (ffikipedia. CRUD. http://en. wikipedia. org/wiki/Create,_read,_update_and_delete)操作。使用该方法 进行开发的Web信息系统,能够达到简单便捷的构建系统持久化层、通过简单配置即可实 现异构数据库之间的持久化迁移。
技术实现思路
本专利技术的目的在于克服现有持久化技术中存在的一系列问题,提供J2EE环境下 的通用数据持久化方法及系统。本专利技术的技术方案为一种基于J2EE的数据持久化方法,包括以下步骤1)用与底层数据库相关的注释语言对待持久化的Java类进行映射元数据标记;2)构建待持久化Java类对象,对对象的属性值进行赋值;3)构建Java本文档来自技高网...
【技术保护点】
一种基于J2EE的数据持久化方法,包括下列步骤: 1)用与底层数据库相关的注释语言对待持久化的Java类进行映射元数据标记; 2)构建待持久化Java类对象,对对象的属性值进行赋值; 3)构建Java实体对象查询树。 4)以创建的待持久化Java类对象和Java实体对象查询树为参数,调用持久化接口进行持久化操作。
【技术特征摘要】
【专利技术属性】
技术研发人员:王帅,屈夏,杨燕,钟华,
申请(专利权)人:中国科学院软件研究所,
类型:发明
国别省市:11[]
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。