- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一种基于源码分析和代码生成ORM开发工具
一种基于源码分析和代码生成的ORM开发工具
摘要:目前在开发信息系统时,数据持久化功能多采用ORM(对象――关系映射)框架,如Hiberate、MyBatis来进行。这类框架降低了数据持久化功能开发工作量,提升了软件开发和维护的效率,但同时也降低了系统的运行速度、消耗了更多的内存等资源。针对现有ORM框架运行效率低的缺点,该文提出了一种在代码开发阶段使用源码分析获取ORM元信息,自动生成相关代码的数据持久化功能开发方法,并以Intelli IDEA平台插件的形式设计和开发了相应的工具――EasyPersist 。本文通过实验程序,将自动生成的持久化代码与使用Hibernate框架的代码进行了对比实验,证明了所提出的方法的有效性。
关键词:数据持久化;ORM;源码分析;代码生成
中图分类号:TP317 文献标识码:A 文章编号:1009-3044(2016)20-0083-04
1 背景
黑龙江省森林工业总局(龙江森工)是我国最大的国有林区和森林工业集团。龙江森工为了提升自身的管理水平,委托笔者所在的课题组开发和实施智慧林业信息管理平台项目。笔者在项目的调研过程中了解到,基层职工多,包袱重,人均收入低,信息化投入有限,是影响国有林业企业基层信息管理系统普及的重要因素。因此,尽可能地提高信息系统的运行效率,降低系统对运行环境的要求,减少系统运维成本,对于在林业部门普及和推广信息系统具有重要的意义。
为了应对问题领域的复杂性,较好地适应需求的变化,目前的信息系统大多采用面向对象方法进行开发,用实体对象[1]来组织和表示系统在运行过程中获取和产生的各种信息。而与此同时,在信息的持久化存储上,大多数信息系统还在采用传统的关系式数据库,即使用关系数据表来存储信息。因此,在大多数信息系统中,都必须通过某种方式来实现从对象和关系式数据的转换,即所谓的对象――关系映射(Object-Relational Mapping,简称ORM)功能[2-4]。
目前有多种ORM框架,如Hiberante[5]、iBatis[6]等,可以帮助开发者简化ORM功能的开发。这些ORM框架都是在程序运行时,通过反射来动态访问实体对象的属性和方法[7, 8],不需要对象实现特殊的接口或方法,具有较高的灵活性,易于部署和使用,因此得到了广泛的应用。
但这些ORM框架也存在一些天然的缺陷,如:1)必须使用反射机制动态访问实体对象,增加了系统运行时的开销,降低了系统的运行效率;2)数据库操作完全在程序运行时动态生成,开发人员难以控制和优化[9-12]等。
针对传统ORM框架运行效率较低的缺点,本文提出了一种新的在代码开发阶段,自动生成源代码的ORM开发方法,并在Intellij IDEA平台①上设计和实现了相应的ORM开发工具――EasyPersist②。使用该工具,可以自动生成实体类的ORM持久化代码。生成的代码可供开发人员利用继承或嵌入等方式直接使用,也可以自由的进行修改和优化。因此本方法在未牺牲开发效率的前提下,为开发人员提供了更大的灵活性。此外,由于没有运行时的反射等开销,最终程序的代码运行效率也更高。该工具在实际项目《龙江森工集团智慧决策平台》的开发中得到了应用,取得了较好的效果。
2 问题描述
2.1 ORM功能
在使用面向对象方法开发的系统中,实体对象(Entity)是数据的基本组织和存储单位,数据多以实体对象属性的形式存在。当系统需要将实体对象中的数据持久化保存到数据库中时,必须将实体对象的属性值转化成对应的数据记录的字段参数;同样的,当系统需要从数据库中载入数据时,也必须将数据库返回的查询结果中的字段数据转化为对应的实体对象属性,如表1所示。这就是所谓的ORM功能。
由于ORM本质上是对数据库访问接口的机械调用和数据格式之间的转换,因此可以用某种自动化工具来对其进行封装,从而简化系统的开发。根据这一思想,产生了ORM框架。使用ORM框架开发的系统,无须编写数据库访问和数据映射转换代码,只需要将转换信息(ORM元信息)提供给ORM框架,然后调用相关的API即可。除此之外,很多ORM框架还提供了实体间关系映射的处理、缓存等高级功能。
但这些框架都需要在系统运行时,动态生成SQL查询语句,并通过反射等方式动态创建和访问实体对象,因此需要额外消耗一定的内存和CPU等资源,与手工编写的ORM相比,运行效率较低;此外,由于SQL语句在运行时动态生成,难以对其进行手动优化,因此这类框架也普遍存在着复杂查询效率低的问题。
2.2 ORM元数据与注解
ORM主要是实体对象(属性)和关系数据(字段)之间的转换,不管哪种ORM工具,都需要知道实体和数据表、属性和字段等之间的对应关
文档评论(0)