ORM对象持久化技术研究


打开文本图片集

摘 要:在使用面向对象的技术开发系统时,会遇到对象持久化问题。对象持久化技术是一种数据存储方法,其目的是为了使程序开发者更加方便地访问数据。对象持久化技术可以解决面向对象技术和关系数据库技术的冲突问题。采用对象持久化技术可以将程序开发人员从关系数据库的细节中解放出来,有更多精力去处理事务逻辑。

关键词:ORM对象;持久化;对象关系映射;缓存;延迟加载

中图分类号:TP301

文献标识码:A 文章编号:1672-7800(2015)005-0052-02

作者简介:李晓东(1980-),男,河南商丘人,硕士,郑州成功财经学院信息工程系讲师,研究方向为软件工程、面向对象技术;魏惠茹(1982-),女,河南焦作人,硕士,郑州成功财经学院信息工程系讲师,研究方向为软件工程、网络编程;聂利颖(1982-),女,河南上蔡人,硕士,郑州成功财经学院信息工程系讲师,研究方向为网络安全、网络编程。

0 引言

应用软件开发中数据持久化很重要。通常我们会采用面向对象的设计方法开发程序,数据存储采用关系数据库。面向对象的程序设计方法和关系数据库之间存在的不匹配问题,会导致在开发时采用对象模型而到数据存储时又采用关系模型,这种不匹配需要编写大量的SQL语句进行转换,导致程序的耦合性加大、可扩展性降低,通过ORM[1]映射的持久化技术[2]能够解决此类问题。

1 ORM

对象关系映射(Object/Relation Mapping,简称ORM)是一种将对象和记录建立关联映射的技术。面向对象的开发和设计方法是目前比较流行的开发技术,而关系数据库是存储数据的主流系统。应用系统中的数据表现为一个个对象,关系数据库中的数据表现为一条条记录。对象和记录是数据的两种表现形式,通过ORM可以实现数据形式的相互转换。

2 对象持久化

对象持久化是将程序数据在持久状态[3]和瞬时状态[4]间转换的机制,在需要对象数据的时候能够方便地提取出来。在对象数据库出现并流行之前,持久化技术是解决对象模型与关系数据模型操作不匹配的最好途径。

对象持久化通过对象关系映射[5]完成,也就是对象属性和关系数据库中表的字段建立一种对应关系,通过这种对应关系将对象的操作转换为数据库操作。实际应用中,很多对象的操作,如保存对象、修改对象等,通过对象关系映射可以转移到后台数据库自动完成,这样就可使程序设计人员从数据库细节中解放出来。

3 对象持久化技术实现

在应用系统中使用对象持久化技术通常有4个步骤:

(1)创建系统配置文件。对象持久化技术通常采用xml格式文件[6]对数据库进行连接配置,xml格式文件能够在各种物理数据库环境下工作,配置内容主要包括数据库连接和运行时所需的各种属性。

(2)设计持久化类。持久化类就是在面向对象技术中设计对象模型,在面向对象程序中建立类,这些类通常都是实体类[7],我们利用它们携带数据,这些实体类可以用持久化技术持久化到数据库中。例如,可以设计如图1和图2所示的实体类Score和Student。

(3)建立对象关系映射。持久化类设计完成后,就可建立对象和关系数据库表之间的映射了。

映射基本原则是:类映射成数据库表,属性映射成数据库表中的字段。

实体类Score和Student的映射效果如图3、图4所示。

(4)通过持久化框架提供的API编写访问数据库代码。在持久化框架中通常提供了众多的持久化方法,如 save()、load()、get()、delete() 、update()等,通过这些方法可以透明地完成对象的增加、修改、查询和删除。

4 对象持久化技术查询优化机制

对象持久化技术为了提高数据库查询效率,提供了一些优化机制:

(1)缓存技术[8]。缓存中存放数据的拷贝,应用程序直接对缓存中的数据进行操作。缓存通常以内存作为介质,数据库通常存放在硬盘中,内存的读写速度远比硬盘的读写速度要快,因而缓存可以提高操作数据的速度。使用缓存技术可以降低对数据库的访问频率,减少select语句的数目,降低数据库系统的压力,提高应用系统性能。

(2)采用延迟加载[9]。避免加载不需要访问的数据。延迟加载机制是为避免一些无谓的性能开销提出的,所谓延迟加载就是在真正需要数据的时候才执行数据加载操作。延迟分为实体类的延迟加载、集合的延迟加载、属性的延迟加载几种。

5 对象持久化技术优缺点

对象持久化技术优点:①持久化技术封装了数据库访问细节,为大部分业务逻辑提供了面向对象的操作API;②持久化技术不依赖于底层数据库和上层业务逻辑层实现,更换数据库更加方便;③将开发者从关系模型中解放出来,能够以面向对象的思维操作关系数据库;④使用方便,隐藏了数据访问细节,使得与数据库交互变得简单易行,对于增删改查这类一般性的应用非常简单,完全不用考虑SQL语句,大大节省了手动编写代码的时间和精力;⑤使用持久化技术开发的应用系统结构清楚,可维护性、可重用性很高,避免了手工编码结构化查询语句SQL并大量嵌入到代码中,见下面示例:

(1)没有使用对象持久化技术示例,见图5。

(2)使用了对象持久化技术示例,见图6。

对象持久化技术缺点:①在批量数据处理时有弱势;②比较适合针对单一对象简单的增删查改,不适合用于批量的修改、删除;③在使用数据库的特定优化机制时不适用。

6 结语

对象持久化技术将程序开发人员从关系数据库细节问题中解放出来,有更多精力解决具体事务逻辑,提高了开发效率。但是,对象持久化技术对批量对象处理存在一定限制,需要程序设计人员加以注意。

参考文献:

[1] 李杰.基于ORM的轻量级数据持久化技术研究及应用[J].计算机科学,2010(9):156-158.

[2] 陈天河.轻量级Web应用开发宝典[M].北京:电子工业出版社,2011.

[3] 杨少波.J2EE项目实训-Hibernate框架技术[M].北京:清华大学出版社,2008.

[4] 蒲子明.Struts 2+Hibernate+Spring整合开发技术详解[M].北京:清华大学出版社,2010.

[5] 欧黎源.基于JPA的数据持久化模型设计与实现[J].计算机工程,2009(10):245-248.

[6] 李刚.轻量级Java EE企业应用实战[M].北京:电子工业出版社,2009.

[7] 魏惠茹.Hibernate对象持久化技术的研究[J].电脑知识与技术,2011(6):164-169.

[8] 孙卫琴.精通Hibernate:Java对象持久化技术详解[M].北京:电子工业出版社,2005.

[9] Hibernate参考手册[EB/OL].http://docs.jboss.org/hibernate/orm/4.1/quickstart/en-US/html_single/.

(责任编辑:杜能钢)

推荐访问:技术研究 持久 对象 ORM