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

woaidongmao

文章均收錄自他人博客,但不喜標題前加-[轉貼],因其丑陋,見諒!~
隨筆 - 1469, 文章 - 0, 評論 - 661, 引用 - 0
數據加載中……

Hibernate框架如何實現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的技術可以分為兩類那就是SAXDOM,這兩種方式的差別和優缺點大家可以上網查閱或者我們會在以后的文章中提出,請大家關注。

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

    解析Properties文件

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

    解析Java類文件

    通過解析映射文件和數據庫配置文件我們可以建立數據庫的連接,可以得到映射類的名字、屬性名、數據庫表名、字段名以及類型等信息。要把數據庫中表的數據映射成為對象,首先需要把表中的記錄取出,然后將每個字段值給映射類對象的每個屬性,這個賦值過程要調用對象中的set方法。我們現在通過映射文件只知道類名和屬性名,如何根據類名和屬性名調用相應的setget方法,是一個關鍵問題。

    Java中有一種機制叫反射機制,使用這種機制我們可以得到類的信息,包括類只用的修飾符、方法、屬性、繼承的父類以及實現接口等信息。反射機制相關的類有ClassFieldMethod以及Constructor等。通過ClassgetFields()、getMethods()和getConstructors()方法得到相應的屬性、方法和構造方法。通過Field類的getName()、getType()和getModifiers()方法得到相應的屬性名、屬性類型、屬性修飾符信息。通過MethodgetReturnType()可以獲取方法的返回類型,invoke()方法可以根據給定的方法名和參數值執行對象中對應的方法。我們可以首先通過以上方法獲取類中的屬性名,然后拼寫成setXXXgetXXX方法名,最后根據方法名執行對應的方法,將數據庫數據加載到對象中。

    此外要實現Hibernate機制還會涉及到一個技術點,那就是如何獲取數據庫的相關信息。要實現這個功能,就需要大家了解JDBCDataBaseMetaData類和ResultSetMetaData類,通過這兩個類的方法我們就可以獲取數據庫表的字段名、類型、大小等相關信息。

    在這里我只是給大家把實現ORM功能的一些關鍵技術提了出來,通過上面介紹大家對ORM機制應該有個大概了解,比如通過解析數據庫配置文件獲取數據庫連接信息并建立連接,通過解析映射文件可以獲取映射類名、屬性名、表名以及字段名等信息,得到名字后通過反射機制可以得到映射類信息,調用構造方法創建對象,調用每個屬性的set方法給對象設值完成數據的裝載。Hibernate就是采用這個過程來實現ORM的,當然Hibernate還使用了事務控制、緩存控制等很多技術 .

 

posted on 2009-06-04 21:59 肥仔 閱讀(330) 評論(0)  編輯 收藏 引用 所屬分類: Web-后臺

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            韩国精品一区二区三区| 亚洲欧美www| 亚洲视频一起| 亚洲一区三区在线观看| 亚洲综合国产| 久久高清福利视频| 久久综合网hezyo| 欧美成人亚洲| 日韩一区二区福利| 亚洲尤物在线| 久久综合中文色婷婷| 欧美精品久久久久久久久久| 国产精品二区在线观看| 国产喷白浆一区二区三区| 国产自产在线视频一区| 亚洲毛片在线看| 亚洲愉拍自拍另类高清精品| 久久国产精品网站| 一本色道久久99精品综合| 欧美a级片网| 91久久国产精品91久久性色| 亚洲国产天堂久久综合| 亚洲一级电影| 六月丁香综合| 国产老女人精品毛片久久| 影音先锋中文字幕一区| 一本色道久久综合亚洲精品按摩| 欧美在线观看视频在线| 亚洲黄一区二区三区| 午夜精彩视频在线观看不卡| 欧美成人视屏| 国产综合在线看| 小处雏高清一区二区三区 | 99在线观看免费视频精品观看| 亚洲图片在线观看| 欧美成人一区二区三区| 国产欧美一区二区视频| 夜夜夜精品看看| 欧美电影在线播放| 午夜影院日韩| 欧美体内she精视频| 亚洲国产婷婷香蕉久久久久久| 亚洲一区亚洲二区| 亚洲国产另类 国产精品国产免费| 午夜精品电影| 国产精品免费一区二区三区观看| 亚洲乱码国产乱码精品精天堂 | 在线视频免费在线观看一区二区| 老司机精品视频一区二区三区| 亚洲无线视频| 国产精品久久久久影院亚瑟| 亚洲免费精彩视频| 亚洲国产成人精品视频| 久久亚洲综合色| 在线视频观看日韩| 老司机一区二区三区| 欧美中文日韩| 国产亚洲欧洲一区高清在线观看| 性欧美xxxx大乳国产app| 亚洲人成在线观看一区二区 | 欧美精品一区二区三区视频| 亚洲黑丝在线| 亚洲国产精品尤物yw在线观看| 欧美多人爱爱视频网站| 亚洲精品三级| 99国产精品久久久久久久成人热| 欧美日韩国产电影| 亚洲一区二区三区免费观看 | 99精品欧美一区二区三区综合在线| 久久婷婷av| 亚洲国产精品成人精品| 亚洲电影免费| 欧美日韩一区视频| 亚洲免费在线看| 午夜久久资源| 亚洲国产va精品久久久不卡综合| 欧美韩国日本综合| 欧美日韩少妇| 久久黄金**| 免费成人在线视频网站| 一区二区三区不卡视频在线观看 | 久久亚洲综合色一区二区三区| 久久久成人网| 亚洲美女在线观看| 一区二区三区四区精品| 红桃视频成人| 91久久黄色| 国产精品永久免费观看| 麻豆精品传媒视频| 欧美区国产区| 久久精品国产一区二区三| 欧美成人午夜剧场免费观看| 亚洲欧美精品中文字幕在线| 久久婷婷人人澡人人喊人人爽| 日韩亚洲欧美一区二区三区| 亚洲调教视频在线观看| 亚洲国产高清在线观看视频| 一本色道久久综合狠狠躁篇的优点| 激情综合色综合久久| 亚洲精品裸体| 激情视频一区二区三区| 中日韩在线视频| 亚洲国产日韩一区二区| 亚洲欧美色一区| 在线亚洲免费视频| 久久综合精品国产一区二区三区| 亚洲一区二区三区乱码aⅴ| 久久免费视频网站| 欧美影院在线播放| 欧美日韩精品在线观看| 欧美激情在线| 国内在线观看一区二区三区| 亚洲视频在线观看网站| 亚洲精品女av网站| 久久久久国色av免费观看性色| 亚洲欧美日韩一区二区| 欧美精品一区二区高清在线观看| 久久久久国色av免费看影院| 国产精品分类| 一区二区三欧美| 一区二区三区 在线观看视| 久久天天狠狠| 免费在线看一区| 狠狠爱www人成狠狠爱综合网| 亚洲一区二区三区在线观看视频 | 亚洲欧美一区二区原创| 六月婷婷一区| 国产精品丝袜xxxxxxx| 亚洲黄色影院| 国产一在线精品一区在线观看| 99热精品在线| 亚洲图片你懂的| 欧美日在线观看| 亚洲视频第一页| 欧美亚洲专区| 国产一区二区三区在线观看网站| 欧美亚洲一区| 久久亚洲高清| 伊人春色精品| 欧美www视频| 亚洲乱码国产乱码精品精天堂| 日韩五码在线| 国产精品黄色在线观看| 亚洲曰本av电影| 久久色在线观看| 亚洲人成网站999久久久综合| 欧美激情亚洲综合一区| 一级日韩一区在线观看| 亚洲欧美在线aaa| 国产在线一区二区三区四区| 久久久一二三| 亚洲精品在线一区二区| 午夜精品福利一区二区三区av | 亚洲欧美久久久久一区二区三区| 欧美激情麻豆| 国产精品99久久久久久有的能看| 先锋资源久久| 伊人久久亚洲影院| 欧美精品一区在线发布| 亚洲午夜精品| 欧美mv日韩mv国产网站| 亚洲午夜精品一区二区三区他趣| 国产日韩欧美麻豆| 欧美成人激情视频| 亚洲综合国产激情另类一区| 免费在线观看成人av| 一区二区三区国产| 国产亚洲欧美另类中文 | 欧美日韩中文精品| 欧美主播一区二区三区| 亚洲精品1区2区| 久久国产精品电影| 99热这里只有精品8| 国产麻豆午夜三级精品| 美玉足脚交一区二区三区图片| 日韩一级片网址| 欧美www视频在线观看| 性欧美精品高清| 日韩西西人体444www| 红桃视频国产精品| 国产精品日韩欧美一区| 欧美精品99| 久久夜色精品国产| 一区二区三区四区国产| 亚洲日本久久| 伊人成人网在线看| 国产精品白丝jk黑袜喷水| 亚洲美女视频网| 国产精品高清一区二区三区| 亚洲精华国产欧美| 欧美激情a∨在线视频播放| 噜噜噜久久亚洲精品国产品小说| 国产精品区一区二区三区| 欧美一二三区精品| 久久人人97超碰人人澡爱香蕉| 在线观看视频日韩| 亚洲电影免费观看高清完整版在线| 久久精品视频网| 欧美资源在线| 亚洲一区二区三区777|