admin 管理员组

文章数量: 1086019


2024年6月2日发(作者:人人微服务平台)

第l0卷第2期 VO1.1ONO.2 

Feb 20l1 

O R M框架的底层实现机制 

周志刚,王 彬 

(安徽理工大学计算机科学与工程学院,安徽淮南232001) 

摘 要:ORM(Object/Relation Mapping),即对g/关系数据库映射。ORM框架就是为了解决面向对象程序设计语 

言与关系型数据库之间“阻抗不匹配”而产生的,这种框架能将业务逻辑层和持久层有效分离,使两层之间以松耦合 

方式衔接起来,便于代码的维护。探讨了ORM框架的实现机制。 

关键词:对象/关系映射;关系型数据库;阻抗不匹配;松耦合 

中图分类号:TP301 文献标识码:A 文章编号:1672—7800(2011)02 0008—02 

要的作用是配置数据库的连接信息,描述了数据库的驱 

0 引言 

随着计算机技术的蓬勃发展,传统面向过程的编程语 

言已逐渐失去了以前的主流地位。由于面向对象的编程 

语言更接近人类的思维习惯,具有封装、继承、多态等优良 

动、用户名、密码等。所有的ORM框架都一样,也没有什 

么神奇之处,底层都是采用JDBC,它们只是对底层的JD— 

BC进行了封装,让我们使用者看不到JDBC那些常用 

CURD操作。每种ORM框架都像hibernate一样提供了 

配置文件(*.xm1),要完成映射就得解析相关的.xml的 

特性,从而成为了当今计算机领域的主流语言。而目前主 

流的数据库产品依然是关系型数据库,使得编程语言和底 

层数据库的发展不协调,也就是我们常说的“阻抗不 

配”,这就需要一座桥梁把这二者结合在一起,ORM框架 

充当的就是这个功能。 

配置文件,hibernate是采用dom4j来解析的。 

1.1 dom4j解析.xml文件 

Dom4i是一个易用的、开源的库,用于XML,XPath 

和XSI T。它应用于Java平台,采用了Java集合框架并 

完全支持DOM,SAX和JAXP。XML文件的结构就是由 

个根元素和一些子元素组成的,dom4j他为我们提供以 

1 ORM框架实现机制 

所有的ORM框架都是采用图1所示方式映射的。 

类 

对象 

java方式解析XML文件的API,我们可以利用这些API 

来完成解析取得有用的信息。Hibernate通过dom4j取得 

配置信息后,底层仍采用JDBC来进行数据库连接。数据 

库连接过程如图2所示。 

表 

行记录 

属性 表宁段 

外键 

图1映射方式 

匦亟巫 L 

关系 

即把实体类映射成表,类的一个实例映射成表中的一 

行记录,类的属性映射成表的字段,实体类之间的关系映 

射成外键。那么ORM框架又是如何实现这种映射机制 

图2 Hibernate与数据库的连接过程 

1.2 Java的反射机制 

的呢?熟悉hibernate的开发人员都知道,它是由映射类 

(*.java)、映射文件(*.hbm.xm1)和配置文件(*.cfg. 

xm1)来完成以上映射的。映射类也就是我们说的持久类, 

由图1可以看出,它的作用是对应数据库中的表,一个实 

例对应表中的一条记录,属性对应表字段。映射文件提供 

了持久类与数据库之间具体的对应信息,如:持久类对应 

要完成ORM映射还得用到java的反射机制。反射 

机制的作用是完成解析java类文件。 

通过解析映射文件和数据库配置文件我们可以建立 

数据库的连接,可以得到映射类的名字、属性名、数据库表 

名、字段名以及类型等信息。要把数据库中表的数据映射 

成为对象,首先需要把表中的记录取出,然后将每个字段 

了数据库的哪张表,属性对应哪些表字段等。配置文件主 值给映射类对象的每个属性,这个赋值过程要调用对象中 

作者简介:周志刚(1984一),男,湖北黄石人,安徽理工大学计算机科学与工程学院硕士研究生,研究方向为计算机监控;王彬(1985 

),男,山东章丘人,安徽理工大学计算机科学与工程学院硕士研究生,研究方向为计算机控制。 

第2期 周志刚,工彬:ORM框架的底层实现机制 .9. 

的set方法。我们现在通过映射文件只知道类名和属性 

这两样技术,加点JDBC的基础知识,你也可以开发一个 

小小的ORM框架了。这里只是简单谈了下对象到关系 

名,如何根据类名和属性名调用相应的set和get方法,是 

个关键问题。在Java中有一种机制叫反射机制,使用 

型数据库的映射,就不讨论hibernate那些懒加载和缓存 

等技术了。 

这种机制我们可以得到类的信息,包括类只用的修饰符、 

方法、属性、继承的父类以及实现接口等信息。反射机制 

相关的类有Class、Field、Method以及Constructor等。通 

过Class的getFields()、getMethods()和getConstructors 

()方法得到相应的属性、方法和构造方法。通过Field类 

2 结束语 

正如大多数开发人员所说的,Java框架太多,已到了 

泛滥的程度,在我们学习框架的过程中,我们不应该花太 

多的时间在学习框架上,而是去掌握那些最基础最底层的 

的getName()、getType()和getModifiers()方法得到相应 

的属性名、属性类型、属性修饰符信息。通过Method类 

getReturnType()可以获取方法的返回类型,invoke()方法 

东西,即使是出现了新的框架也不必担心,因为大多数框 

架的设计都是大体相同的,了解了一种框架,结合基础知 

识去学习一个新框架就是小菜一碟了。要想掌握0RM 

框架,还是得先学习好底层的JDBC操作。 

参考文献: 

[1]夏昕,曹晓钢,唐勇.深入浅出Hibernate ̄M].北京:电子.Y-业出版 

社。2005. 

可以根据给定的方法名和参数值执行对象中对应的方法。 

我们可以首先通过以上方法获取类中的属性名,然后拼写 

成setXXX和getXXX方法名,最后根据方法名执行对应 

的方法,将数据库数据加载到对象中,完成映射的过程,如 

图3所示。 

[2] 张淑全.基于hibernate数据层设计模式的研究与实现[D].大连: 

大连海事大学,2007. 

图3利用反射完成数据库到持久对象的映射 

[3] 何铮.对象/关系映射框架的研究与应用[J3.计算机工程与应用, 

2003(6). 

由以上分析可知,要完成一个ORM机制并不是一件 

非常艰难的事情,说简单点就是dom4j+Java的反射机 

制。现在有些公司用的是自己开发的ORM框架,学会了 

E43林寒超,张南平.Hibernate技术的研究[J].计算机技术与发展, 

2006(5). 

(责任编辑:杜能钢) 

The Underlying Implementation Mechanism of oRM Framework 

Abstract:ORM is object/relation database mapping.The generation of ORM framework is to solve the”impedance mis~ 

match”problem between object—oriented programming language and relational databases.It can effectively separate the 

business logic layer from persistence layer,making the two layers link up in loosely coupled,to maintain code.This thesis is 

mainly to discuss the implementation mechanism of ORM framework. 

Key Words:Obj ect/Relation Mapping;Relational Database;Impedance Mismatch;Loosely Coupled 


本文标签: 映射 框架 数据库 属性