ORM落成原理

1.什么是ORM 
ORM的齐全是Object Relational
Mapping,即对象关联映射。它的贯彻思想就是将关周全据库中表的数额映射成为目的,以目的的样式突显,那样开发人士就可以把对数据库的操作转化为对那几个目的的操作。由此它的目标是为着便于开发人士以面向对象的思维来落实对数据库的操作。

2.什么是Hibernate 
对于Hibernate的叫做有不少,比如工具、技术、框架以及缓解方案等,那个都可以,首要的是大家要掌握它的意义。在此间我习惯性称它为框架,它是一种能落到实处ORM的框架。能促成ORM那一个效应的框架有广大,Hibernate可以说是那个框架中最盛行、最受开发者关心的,甚至连JBoss集团也把它接受进入,利用它在祥和的花色中落到实处ORM功能。

3.ORM的落到实处原理 
近来在Java领域大家对Hibernate的座谈很多,比如它的利弊、如何行使、错误如何解决以及把它和Struts/Spring等框架相结合营为整个系统的缓解方案。在那里我想和豪门探讨一些更深层次的话题,那就是Hibernate是哪些贯彻ORM的功用?假如让大家协调开发一款完成ORM效率的框架必要如何做?其实那一个标题就是围绕着一个词,那就是“映射”,假诺大家通晓如何贯彻那种映射那么大家也可以开发出自己的一款ORM框架。会动用Hibernate的开发人士都晓得,在运用它完结ORM成效的时候,主要的文书有:映射类(*.java)、映射文件(*.hbm.xml)以及数据库配置文件(*.properties或*.cfg.xml),它们各自的功能如下。 
⑴映射类:它的效果是描述数据库表的社团,表中的字段在类中被描述成属性,将来就足以兑现把表中的笔录映射成为该类的对象。 
⑵映射文件:它的功能是点名数量库表和映射类之间的关联,包罗映射类和数量库表的呼应关系、表字段和类属性类型的呼应关系以及表字段和类属性名称的相应关系等。 
⑶数据库配置文件:它的功力是点名与数据库连接时要求的总是音信,比如总是哪中数据库、登录用户名、登录密码以及总是字符串等。 
在那三种关键的公文中,映射类为常见Java源文件、映射文件为XML格式、数据库配置文件为Properties格式或者是XML格式。想知道“映射”首先大家要求驾驭怎样分析那两种文件,即解析XML格式文件、解析Properties格式文件和平解决析Java类文件。

下边大家来分别追究一下怎么着促成那些文件的剖析。 
⑴怎样解析XML文件 
眼前我们说过映射文件是XML格式,数据库配置文件也得以是XML格式,因而只要能解析XML文件我们就可以取得那多个文件的消息。XML文件格式我概括做下介绍,比如<name
sex=”male”>tom</name>那句就是一个XML格式的叙述,name代表节点,节点必须有始发标记<name>和了结标记</name>,在始发标记中大家可以加上一些性质的扬言比如sex。解析XML的技能可以分为两类那就是SAX和DOM,那二种艺术的异样和优缺点大家可以上网查阅或者大家会在后来的文章中提议,请大家关注。已毕解析XML文件的功力很有益于,大家得以通过下载第三方的部分工具包如xml-apis.jar和xercesImpl.jar等,也得以利用JDK自带的工具类DocumentBuilderFactory、DocumentBuilder、Document、Element等等,大家能够因而API文挡查阅这几个类的表达。通过这个类大家可以把XML文件的音信读入内存并通过类中的某些方法获得指定节点的名字、值、属性名、属性值这一个音信。 
⑵解析Properties文件 
数据库配置文件可以是XML格式也可以是Properties格式,Properties文件一般拔取“属性名=属性值”的样式描述新闻。假如安顿文件采取Properties文件讲述,大家就需求想方法解析那系列型的文本了。想解析Properties文件大家就必要熟识Properties那一个类了,那些类有一些常用方法比如,load()加载指定文件并读取文件中的属性音信,PropertyNames()重临所有属性名,getProperty()重回指定属性名的属性值。通过分析Properties文件大家得以博得一而再数据库要求的新闻,然后通过尾部JDBC技术与数据库建立连接。 
⑶解析Java类文件 
通过解析映射文件和数据库配置文件大家得以成立数据库的连接,可以收获映射类的名字、属性名、数据库表名、字段名以及项目等新闻。要把数据库中表的数额映射成为目标,首先需求把表中的笔录取出,然后将每个字段值给映射类对象的各种属性,那么些赋值进度要调用对象中的set方法。大家前几天由此照射文件只晓得类名和属性名,如何根据类名和质量名调用相应的set和get方法,是一个关键难题。在Java中有一种体制叫反射机制,使用那种机制大家可以取得类的信息,包罗类只用的修饰符、方法、属性、继承的父类以及贯彻接口等信息。反射机制相关的类有Class、Field、Method以及Constructor等。通过Class的getFields()、getMethods()和getConstructors()方法取得相应的习性、方法和构造方法。通过Field类的getName()、getType()和getModifiers()方法得到相应的属性名、属性类型、属性修饰符音信。通过Method类getReturnType()可以取得格局的回到类型,invoke()方法可以按照给定的方法名和参数值执行对象中对应的办法。我们得以率先通过上述措施取得类中的属性名,然后拼写成setXXX和getXXX方法名,最后按照章程名执行相应的章程,将数据库数据加载到目标中。 
其余要促成Hibernate机制还会提到到一个技术点,那就是什么样得到数据库的相关音信。要兑现这么些职能,就必要大家探听JDBC的DataBaseMetaData类和ResultSetMetaData类,通过那多个类的艺术大家就足以获取数据库表的字段名、类型、大小等相关音信。 
在那边自己只是给我们把落到实处ORM成效的一部分关键技术提了出去,通过地方介绍大家对ORM机制应该有个大概了然,比如通过分析数据库配置文件获取数据库连接音信并建立连接,通过解析映射文件能够得到映射类名、属性名、表名以及字段名等音讯,得到名字后透过反射机制得以博得映射类新闻,调用构造方法创设对象,调用每个属性的set方法给目的设值完毕多少的装载。Hibernate就是应用那个历程来兑现ORM的,当然Hibernate还使用了业务控制、缓存控制等众多技术……

转:http://www.cnblogs.com/bendantuohai/p/4711340.html

谢!

相关文章