动态数据库的ORM实现

来源 :计算机时代 | 被引量 : 0次 | 上传用户:senfa88
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:针对现有的ORM组件不能实现运行时动态改变数据库结构的不足,文章提出了一种动态数据库的ORM解决方案,该方案从分析设计数据库的基本原则入手,给出了一种将索引表和动态数据表相结合的ORM模型,通过索引表间接实现了动态数据库的ORM,弥补了现有ORM组件的不足。同时分析比较了动态数据库ORM和传统JDBC直连的效率。
  关键词:动态数据库;ORM;索引袁
  
  0 引言
  
  软件结构体系已由单层结构向多层结构发展,在Web应用软件中,这种体系结构表现为典型的三层结构:表述层、业务逻辑层、数据层。这种层次结构给应用软件带来了伸缩性、可维护性、可扩展性、可重用性和可管理性等诸多优点。
  该层次结构中业务逻辑层不仅要处理业务逻辑,而且还负责访问数据库,操作和处理业务逻辑所需的数据。JDBC是所有数据库访问方式中效率最高的,但是由于JDBC的编码方式属于SQL语句嵌入式的硬编码结构,所以在代码里必然会带有大量的SQL语句,从而导致开发效率的降低和维护成本的升高。所以为了把数据访问和业务逻辑区分开来,部分应用在业务逻辑层和数据层之间增加了数据访问中间件——持久层,由这一层来负责具体的数据访问。持久层封装了访问细节并向业务逻辑层提供数据访问接口,使业务逻辑不必再纠缠于数据访问语句中,从而使业务代码更加简洁专一。
  
  1 ORM模式简介
  
  ORM(Object-Relation-Mapping)模式指在单个组件中实现所有实体的持久化,封装数据细节。目前最流行和最普及的数据层解决方案是关系数据库,而关系数据库是基于数学集合论原理的,这和被普遍接受的面向对象的业务逻辑实现存在一定的匹配问题。为了解决这种匹配问题,目前已经提出了多种解决方案,比如CMP、JDO、ORM等等。其中ORM作为目前比较流行的持久化解决方案,与CMP、JDO相比具有结构简单,移植性高,对环境依赖度低的优点,与POJO(Plan Old Java Object)相结合使用的方式已经成为一种越来越受欢迎且用于取代CMP和JDO的持久化方案。
  
  2 动态数据库的ORM实现
  
  与运行时物理表结构不改变的静态数据库相对,动态数据库是指由于数据结构不能在设计期间完全预知,物理表结构在运行时会随着业务逻辑的需求动态增加、删除或修改数据库。目前的ORM组件是通过对象一表和属性一列的映射配置文件实现对象关系映射的,所以可以与静态数据库结合使用并能很好地工作。但是这种ORM组件对于动态数据库而言却是不适用的,映射配置文件不可能在应用运行时动态修改,同样映射的对象文件也不可能在应用运行时动态修改。虽然业务逻辑可以避开ORM直接访问数据库,但是这样做是与增加持久层简化业务逻辑的初衷相背的。
  所以,需要一种能与动态数据库结合使用的ORM实现。本文提出了一种通过改进数据库的表设计,增加索引表而实现动态数据库结构的抽象规范,继而在此基础之上实现动态数据库的ORM方案。
  
  2.1 数据库设计准则
  由于动态数据库数据表的动态特性,所以要实现ORM必须对其进行逻辑上的抽象,归纳出一个统一的逻辑结构,使ORM组件可以对数据表进行统一的管理和访问。本文按照如下几点对数据库进行改良并抽象出统一的数据表逻辑结构。
  2.1.1 统一生成准则
  对于不同应用来说,每个生成的动态数据表在结构上具有一定的相似性。所以应该在设计阶段根据可能的数据表的生成类型确定动态数据表的生成规则,让所有的数据表都按照规则生成,这样生成的数据表在结构上具有一致性,并能在逻辑上实现数据表的统一管理。
  2.1.2 增加索引表
  索引表是存放所有动态生成的数据表的参数的表,包括数据表的物理表名、逻辑表名、物理列名、逻辑列名等。索引表工作于持久层和数据层之间,逻辑上等同于ORM组件和数据表之间的代理,ORM组件通过索引表代理间接访问数据表:
  ORM则建立在表结构固定的索引表上,这样,在逻辑上解决了动态数据表的ORM问题。本文引入了两张索引表:表索引表和列索引表,其结构如表1和表2所示,其中表索引表的map_name列的数值是惟一的,列索引表的map_name列在table_id值相等的情况下取值也是惟一的。在新建一张数据表的时候,向表索引表中写入一条记录,其中的字段值为该数据表的相关信息,比如逻辑表名,物理表名等等。同时根据该数据



其他文献
(1.天津工程师范学院机械系,天津300222;2.天津工程师范学院计算机系)  摘要:基于当前企业ERP的局限性,提出了建立异构ERP集成系统的设计思路。通过分析该系统功能需求,建立了系统结构和功能结构,分析了实现的关键技术,为企业间信息交互的实现提供一种新思路。  关键词:ERP;集成;企业;系统
期刊
(1.昆明理工大学信息工程与自动化学院,云南 昆明650051;2.华北石油管理局水电厂)  摘要:随着嵌入式系统在工程中应用的不断增多,上位计算机系统通过嵌入式平台进行现场设备的控制以及对现场数据进行处理的应用模型在实际工程中得到广泛应用。文章利用中间件技术完成上位计算机系统与下位嵌入式平台的通讯,使通讯模块具有很好的可移植性;通过MFC技术生成Activex中间件控件,在控件中完成以太网的连接
期刊
(福州大学物理与信息工程学院,福建 福州350002)  摘要:IP组播是一种为优化使用网络资源而产生的技术,它在局域网上将IP数据包从一个发送者传送到一组接收者,为网络实时多媒体传输和批量数据传输提供了解决方法。以IP组播为基础的纯软件的视音频传输系统能保证传输流的服务质量,又能有效地拓展会话节点的规模,在校园网的实时答疑系统中起到关键作用。文章主要介绍实现IP组播音视频实时传输系统的几个关键技
期刊
(杭州职业技术学院信息电子系,浙江 杭州310018)  摘要:软件构件动态适配技术已成为研究的一个重点。文章简述了软件构件动态适配的主要特点,通过对几种软件构件动态适配技术的分析,指出了现有软件构件动态适配方法的不足,并提出了一种新的基于移动Agent的软件构件动态适配方法。该方法从多Agent系统和面向Agent的软件工程的角度进行软件构件动态适配,使适配后的目标系统具有良好的可重用性。  关
期刊
(1.广东药学院医药信息工程学院,广东 广州510006;2.中南大学软件学院)  摘要:介绍了使用J2EE的EJB组件技术设计和开发Session Bean的原理,分析了两种Session Bean的特点,实现了一种有状态Session Bean的开发。  关键词:J2EE;EJB;有状态Session Bean;无状态Session Bean
期刊
(1.咸阳师范学院计算机系,陕西 咸阳712000;2.咸阳师范学院数学系;3.咸阳师范学院图形图像处理研究所)  摘要:为了使企业各部门的数据信息能够很好地互联互通,企业各部门的信息系统就需要进行数据库的转换。文章讨论了在PowerBuilder环境下如何利用数据管道技术实现异质数据库的转换,介绍了数据管道的特点,在一个实例中给出了创建数据管道进行数据迁移的具体实现步骤与主要代码。  关键词:P
期刊
(浙江经济职业技术学院,浙江 杭州310018)  摘要:描述了基于树的遍历技术的VFP通用菜单编程策略。通过记录程序的运行轨迹(也称“路径”),可以用同一表单(Form)展现多级菜单,使菜单页“进退自如”。该策略能适应不同数量的菜单项以及所有层级的菜单展开,并且实现菜单程序与菜单项目描述的分离,从而提高编程效率、程序的适应性和应用系统的扩展性。  关键词:菜单;菜单页面;菜单项;运行轨迹
期刊
(1.苏州大学计算机科学与技术学院,江苏 苏州215006;2.江苏技术师范学院计算机科学与工程学院)  摘要:以三星公司的K9F1208UOB芯片为例,详细介绍了Nand-flash存储器芯片的工作原理以及在$3C2440A平台上应用的软硬件设计过程。  关键词:嵌入式;Nand-flash;$3C2440A;设计
期刊
(浙江工业大学信息工程学院,浙江 杭州310014)  摘要:总结分析了目前《操作系统》课程教学中常用的几种方法,指出了教学中存在的问题,针对性地提出了以Tutorial任务驱动的课程教学方法,并给出一个Tutorial任务设计实例。教学实践结果表明,这种以“任务为主线、教师为主导、学生为主体”的互动式教学方法效果良好。  关键词:操作系统;教学;Tutorial任务;互动
期刊
(1.华侨大学信息学院,福建 泉州362021;2.华侨大学工商管理学院)  摘要:研究了如何在Windows与Linux这两种最流行的操作系统之间进行互操作:在单机情况下,共存于同一机器的Windows与Linux如何互访文件系统,利用模拟器软件运行各操作系统下的应用程序;在网络情况下,运行不同操作系统的计算机如何共享文件与打印机;如何利用虚拟机软件运行另一操作系统下的应用程序。并简要分析比较了
期刊