青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

woaidongmao

文章均收錄自他人博客,但不喜標(biāo)題前加-[轉(zhuǎn)貼],因其丑陋,見(jiàn)諒!~
隨筆 - 1469, 文章 - 0, 評(píng)論 - 661, 引用 - 0
數(shù)據(jù)加載中……

Hibernate框架如何實(shí)現(xiàn)ORM

1.什么是ORM

    ORM的全稱(chēng)是Object Relational Mapping,即對(duì)象關(guān)系映射。它的實(shí)現(xiàn)思想就是將關(guān)系數(shù)據(jù)庫(kù)中表的數(shù)據(jù)映射成為對(duì)象,以對(duì)象的形式展現(xiàn),這樣開(kāi)發(fā)人員就可以把對(duì)數(shù)據(jù)庫(kù)的操作轉(zhuǎn)化為對(duì)這些對(duì)象的操作。因此它的目的是為了方便開(kāi)發(fā)人員以面向?qū)ο蟮乃枷雭?lái)實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的操作。

    2.什么是Hibernate

    對(duì)于Hibernate的稱(chēng)呼有很多,比如工具、技術(shù)、框架以及解決方案等,這些都可以,重要的是大家要知道它的作用。在這里我習(xí)慣性稱(chēng)它為框架,它是一種能實(shí)現(xiàn)ORM的框架。能實(shí)現(xiàn)ORM這個(gè)功能的框架有很多,Hibernate可以說(shuō)是這些框架中最流行、最受開(kāi)發(fā)者關(guān)注的,甚至連JBoss公司也把它吸收進(jìn)來(lái),利用它在自己的項(xiàng)目中實(shí)現(xiàn)ORM功能。

    3.ORM的實(shí)現(xiàn)原理

    現(xiàn)在在Java領(lǐng)域大家對(duì)Hibernate的討論很多,比如它的優(yōu)缺點(diǎn)、如何應(yīng)用、錯(cuò)誤如何解決以及把它和Struts/Spring等框架相結(jié)合作為整個(gè)系統(tǒng)的解決方案。在這里我想和大家探討一些更深層次的話題,那就是Hibernate是如何實(shí)現(xiàn)ORM的功能?如果讓我們自己開(kāi)發(fā)一款實(shí)現(xiàn)ORM功能的框架需要怎么做?其實(shí)這些問(wèn)題就是圍繞著一個(gè)詞,那就是映射,如果我們知道如何實(shí)現(xiàn)這種映射那么我們也能夠開(kāi)發(fā)出自己的一款ORM框架。會(huì)使用Hibernate的開(kāi)發(fā)人員都知道,在使用它實(shí)現(xiàn)ORM功能的時(shí)候,主要的文件有:映射類(lèi)(*.java)、映射文件(*.hbm.xml)以及數(shù)據(jù)庫(kù)配置文件(*.properties*.cfg.xml),它們各自的作用如下。

    映射類(lèi):它的作用是描述數(shù)據(jù)庫(kù)表的結(jié)構(gòu),表中的字段在類(lèi)中被描述成屬性,將來(lái)就可以實(shí)現(xiàn)把表中的記錄映射成為該類(lèi)的對(duì)象。

    映射文件:它的作用是指定數(shù)據(jù)庫(kù)表和映射類(lèi)之間的關(guān)系,包括映射類(lèi)和數(shù)據(jù)庫(kù)表的對(duì)應(yīng)關(guān)系、表字段和類(lèi)屬性類(lèi)型的對(duì)應(yīng)關(guān)系以及表字段和類(lèi)屬性名稱(chēng)的對(duì)應(yīng)關(guān)系等。

    數(shù)據(jù)庫(kù)配置文件:它的作用是指定與數(shù)據(jù)庫(kù)連接時(shí)需要的連接信息,比如連接哪中數(shù)據(jù)庫(kù)、登錄用戶名、登錄密碼以及連接字符串等。

    在這三種主要的文件中,映射類(lèi)為普通Java源文件、映射文件為XML格式、數(shù)據(jù)庫(kù)配置文件為Properties格式或者是XML格式。想理解映射首先我們需要知道如何解析這三種文件,即解析XML格式文件、解析Properties格式文件和解析Java類(lèi)文件。

    下面我們來(lái)分別探討一下如何實(shí)現(xiàn)這些文件的解析。

    如何解析XML文件

    前面我們說(shuō)過(guò)映射文件是XML格式,數(shù)據(jù)庫(kù)配置文件也可以是XML格式,因此如果能解析XML文件我們就可以獲取這兩個(gè)文件的信息。XML文件格式我簡(jiǎn)單做下介紹,比如<name sex=“male”>tom</name>這句就是一個(gè)XML格式的描述,name代表節(jié)點(diǎn),節(jié)點(diǎn)必須有開(kāi)始標(biāo)記<name>和結(jié)束標(biāo)記</name>,在開(kāi)始標(biāo)記中我們可以添加一些屬性的聲明比如sex.解析XML的技術(shù)可以分為兩類(lèi)那就是SAXDOM,這兩種方式的差別和優(yōu)缺點(diǎn)大家可以上網(wǎng)查閱或者我們會(huì)在以后的文章中提出,請(qǐng)大家關(guān)注。

    實(shí)現(xiàn)解析XML文件的功能很方便,我們可以通過(guò)下載第三方的一些工具包如xml-apis.jarxercesImpl.jar等,也可以使用JDK自帶的工具類(lèi)DocumentBuilderFactoryDocumentBuilderDocumentElement等等,大家可以通過(guò)API文擋查閱這些類(lèi)的說(shuō)明。通過(guò)這些類(lèi)我們可以把XML文件的信息讀入內(nèi)存并通過(guò)類(lèi)中的某些方法獲取指定節(jié)點(diǎn)的名字、值、屬性名、屬性值這些信息。

    解析Properties文件

    數(shù)據(jù)庫(kù)配置文件可以是XML格式也可以是Properties格式,Properties文件一般采用屬性名=屬性值的形式描述信息。如果配置文件采用Properties文件描述,我們就需要想辦法解析這種類(lèi)型的文件了。想解析Properties文件大家就需要熟悉Properties這個(gè)類(lèi)了,這個(gè)類(lèi)有一些常用方法比如,load()加載指定文件并讀取文件中的屬性信息,PropertyNames()返回所有屬性名,getProperty()返回指定屬性名的屬性值。通過(guò)解析Properties文件我們可以得到連接數(shù)據(jù)庫(kù)必要的信息,然后通過(guò)底層JDBC技術(shù)與數(shù)據(jù)庫(kù)建立連接。

    解析Java類(lèi)文件

    通過(guò)解析映射文件和數(shù)據(jù)庫(kù)配置文件我們可以建立數(shù)據(jù)庫(kù)的連接,可以得到映射類(lèi)的名字、屬性名、數(shù)據(jù)庫(kù)表名、字段名以及類(lèi)型等信息。要把數(shù)據(jù)庫(kù)中表的數(shù)據(jù)映射成為對(duì)象,首先需要把表中的記錄取出,然后將每個(gè)字段值給映射類(lèi)對(duì)象的每個(gè)屬性,這個(gè)賦值過(guò)程要調(diào)用對(duì)象中的set方法。我們現(xiàn)在通過(guò)映射文件只知道類(lèi)名和屬性名,如何根據(jù)類(lèi)名和屬性名調(diào)用相應(yīng)的setget方法,是一個(gè)關(guān)鍵問(wèn)題。

    Java中有一種機(jī)制叫反射機(jī)制,使用這種機(jī)制我們可以得到類(lèi)的信息,包括類(lèi)只用的修飾符、方法、屬性、繼承的父類(lèi)以及實(shí)現(xiàn)接口等信息。反射機(jī)制相關(guān)的類(lèi)有ClassFieldMethod以及Constructor等。通過(guò)ClassgetFields()、getMethods()和getConstructors()方法得到相應(yīng)的屬性、方法和構(gòu)造方法。通過(guò)Field類(lèi)的getName()、getType()和getModifiers()方法得到相應(yīng)的屬性名、屬性類(lèi)型、屬性修飾符信息。通過(guò)Method類(lèi)getReturnType()可以獲取方法的返回類(lèi)型,invoke()方法可以根據(jù)給定的方法名和參數(shù)值執(zhí)行對(duì)象中對(duì)應(yīng)的方法。我們可以首先通過(guò)以上方法獲取類(lèi)中的屬性名,然后拼寫(xiě)成setXXXgetXXX方法名,最后根據(jù)方法名執(zhí)行對(duì)應(yīng)的方法,將數(shù)據(jù)庫(kù)數(shù)據(jù)加載到對(duì)象中。

    此外要實(shí)現(xiàn)Hibernate機(jī)制還會(huì)涉及到一個(gè)技術(shù)點(diǎn),那就是如何獲取數(shù)據(jù)庫(kù)的相關(guān)信息。要實(shí)現(xiàn)這個(gè)功能,就需要大家了解JDBCDataBaseMetaData類(lèi)和ResultSetMetaData類(lèi),通過(guò)這兩個(gè)類(lèi)的方法我們就可以獲取數(shù)據(jù)庫(kù)表的字段名、類(lèi)型、大小等相關(guān)信息。

    在這里我只是給大家把實(shí)現(xiàn)ORM功能的一些關(guān)鍵技術(shù)提了出來(lái),通過(guò)上面介紹大家對(duì)ORM機(jī)制應(yīng)該有個(gè)大概了解,比如通過(guò)解析數(shù)據(jù)庫(kù)配置文件獲取數(shù)據(jù)庫(kù)連接信息并建立連接,通過(guò)解析映射文件可以獲取映射類(lèi)名、屬性名、表名以及字段名等信息,得到名字后通過(guò)反射機(jī)制可以得到映射類(lèi)信息,調(diào)用構(gòu)造方法創(chuàng)建對(duì)象,調(diào)用每個(gè)屬性的set方法給對(duì)象設(shè)值完成數(shù)據(jù)的裝載。Hibernate就是采用這個(gè)過(guò)程來(lái)實(shí)現(xiàn)ORM的,當(dāng)然Hibernate還使用了事務(wù)控制、緩存控制等很多技術(shù) .

 

posted on 2009-06-04 21:59 肥仔 閱讀(334) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): Web-后臺(tái)

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            午夜伦欧美伦电影理论片| 日韩亚洲一区在线播放| 免播放器亚洲| 欧美xx69| 欧美日韩国产精品一区二区亚洲 | 久久婷婷国产麻豆91天堂| 欧美在线观看网站| 久久裸体视频| 欧美电影电视剧在线观看| 欧美国产日本高清在线| 久久最新视频| 欧美一区日韩一区| 久久在线91| 亚洲精品在线二区| 亚洲欧美激情视频在线观看一区二区三区| 亚洲在线中文字幕| 久久一区二区精品| 欧美三级日本三级少妇99| 国产午夜精品美女毛片视频| 亚洲成人自拍视频| 亚洲综合另类| 欧美激情一区二区三区在线| 99xxxx成人网| 久久久久久久波多野高潮日日| 欧美精品一区二区久久婷婷| 国产欧美午夜| 一本色道久久加勒比88综合| 久久精品视频在线播放| 亚洲三级影院| 日韩午夜三级在线| 久久久成人精品| 国产精品福利在线观看| 亚洲国产精品福利| 羞羞色国产精品| 亚洲久久成人| 免费久久久一本精品久久区| 国产亚洲福利社区一区| 亚洲一区二区黄| 亚洲国产日韩欧美| 玖玖玖免费嫩草在线影院一区| 国产精品手机视频| 中文在线不卡视频| 亚洲国产婷婷| 蜜臀av国产精品久久久久| 亚洲欧洲av一区二区| 欧美人交a欧美精品| 亚洲成人在线网| 久久在线免费观看| 欧美亚洲尤物久久| 国产精品一级久久久| 亚洲午夜在线| 日韩视频免费观看高清在线视频| 裸体素人女欧美日韩| 在线播放亚洲| 美日韩免费视频| 久久久国产精品一区二区中文| 国产欧美一区二区三区在线老狼| 亚洲欧美在线x视频| 亚洲一区二区三区免费视频| 国产精品久久久久久久久久久久久久 | 久久夜色精品国产噜噜av| 国产精品免费网站在线观看| 亚洲视频在线一区| 一区二区欧美视频| 亚洲欧美激情四射在线日| 99亚洲视频| 欧美激情五月| 亚洲精品一区二区三区99| 亚洲高清一二三区| 欧美日韩p片| 亚洲欧美国产va在线影院| 亚洲欧美国产毛片在线| 国产在线不卡| 免费在线看成人av| 欧美黄色aaaa| 亚洲一区二区三区在线看| 亚洲无线一线二线三线区别av| 国产精品丝袜xxxxxxx| 久久成人免费日本黄色| 性伦欧美刺激片在线观看| 激情欧美一区| 亚洲精品久久在线| 国产精品外国| 美女在线一区二区| 欧美性猛交xxxx免费看久久久| 久久国产加勒比精品无码| 久久综合99re88久久爱| 在线亚洲+欧美+日本专区| 欧美一区二区日韩| 亚洲精品社区| 午夜视频在线观看一区| 亚洲国产精品久久| 亚洲午夜视频在线观看| 在线观看91精品国产入口| 日韩天堂在线观看| 狠狠色狠狠色综合| a91a精品视频在线观看| 国产日韩欧美麻豆| 欧美激情一区二区三区高清视频| 国产精品久久久久久久久久尿 | 一本色道久久综合精品竹菊| 亚洲主播在线播放| 91久久精品久久国产性色也91| 亚洲图色在线| 亚洲精品网站在线播放gif| 性一交一乱一区二区洋洋av| 99re热这里只有精品视频| 欧美在线影院| 亚洲尤物在线| 欧美黑人在线播放| 欧美成人午夜激情在线| 国产女人水真多18毛片18精品视频| 欧美波霸影院| 国产一区二区福利| 亚洲图片欧洲图片日韩av| 日韩一区二区精品在线观看| 久久精品视频va| 久久国产一区二区三区| 欧美午夜免费电影| 亚洲精品日韩欧美| 亚洲经典视频在线观看| 久久国产精品亚洲77777| 午夜精品电影| 欧美性事在线| 在线亚洲一区观看| 一区二区三区高清| 欧美高清视频在线| 99re视频这里只有精品| 欧美中文字幕| 欧美亚州在线观看| 亚洲欧洲日韩综合二区| 亚洲国产高清aⅴ视频| 久久国产精品一区二区三区四区 | 久久综合九色综合久99| 国产女主播一区二区三区| 亚洲在线视频观看| 香蕉久久夜色| 国产情侣久久| 先锋影音网一区二区| 欧美亚洲综合在线| 国产麻豆一精品一av一免费| 亚洲欧美视频| 久久精品亚洲精品| 一区二区在线视频播放| 久久人体大胆视频| 亚洲国产高潮在线观看| 一本大道久久a久久精二百| 欧美日韩国产综合一区二区| 中文av一区二区| 久久成人精品无人区| 国产一区二区你懂的| 香蕉成人啪国产精品视频综合网| 欧美在线啊v一区| 亚洲成人在线免费| 欧美日本精品在线| 亚洲少妇最新在线视频| 久久精品一本| 亚洲激情视频网站| 欧美日韩亚洲精品内裤| 亚洲一区bb| 男人插女人欧美| 一本色道久久综合亚洲二区三区| 欧美视频中文一区二区三区在线观看 | 国产精品久久久亚洲一区 | 欧美成人一区二区在线| 亚洲每日更新| 国产精品一区二区久久久| 久久精品日产第一区二区三区| 亚洲国产精品一区| 欧美一级片一区| 亚洲国产精品视频| 国产精品高潮在线| 久久夜色精品一区| 亚洲视频免费| 欧美激情网友自拍| 欧美专区福利在线| 99视频在线观看一区三区| 国产喷白浆一区二区三区| 欧美理论在线| 久久久亚洲成人| 一区二区日韩伦理片| 欧美成人免费在线| 午夜视频在线观看一区| 亚洲精品视频在线看| 国产精品视频1区| 欧美精品一区二| 久久精品99国产精品| 夜夜爽夜夜爽精品视频| 欧美成人激情视频免费观看| 亚洲欧美精品中文字幕在线| 西西裸体人体做爰大胆久久久| 欧美一级大片在线免费观看| 亚洲二区在线| 国产精品美女www爽爽爽视频| 久久亚洲视频| 欧美一区二区日韩一区二区| 亚洲视频免费在线观看| 亚洲电影有码| 蜜臀av在线播放一区二区三区| 欧美一区二区三区婷婷月色 |