隨筆 - 0, 文章 - 75, 評論 - 0, 引用 - 0
          數據加載中……

          Hibernate筆記=>前言

            Hibernate可以完成[對象]<=>[關系]的映射工作,也就是經常聽到的Object/Relation
          Mapping(ORM),在沒有ORM的時候,開發者需要自己開發對象到數據庫的映射工作,一般來說在Java世界中是通過JDBC來實現,在.Net世界是通過ADO.net來實現,眾所周知這一項任務是繁瑣耗時的,因為要在代碼中內置大量的SQL語句,這使得代碼的可讀性和可維護性大大降低。現在,Hibernate可以為我們來做這項工作,我們只需要配置一個Mapping文件即可,剩下的所有事情就交給Hibernate吧,這樣可以節省對象持久化相關的至少30%的JDBC/ADO.net編程工作量,這是多么的令人興奮阿。
          1、什么是持久化層?

          企業軟件架構比較流行的三層結構是大家比較熟悉的,那就是自上而下為:

          [顯示表述層]=>[業務邏輯層]=>[數據庫層]

          這種結構中,業務邏輯層不僅負責業務邏輯,而且直接訪問數據庫,提供對業務數據的增、刪、改、查的操作。為了把數據訪問的細節和業務邏輯分開,可以把數據訪問作為單獨的持久化層。重新分層后自上而下變為:

          [顯示表述層]=>[業務邏輯層]=>[持久化層]=>[數據庫層]

          這樣持久化層封裝數據訪問細節,為業務邏輯提供面向對象的API。一個完善的持久化層應該達到以下幾個目標:

          (1)代碼重用性高,能夠完成所有的DB訪問操作;

          (2)能夠支持多種數據庫平臺;

          (3)具有獨立性,持久化層的具體實現的變化不能影響上層的實現。

          正因為這幾個目標的艱巨,在企業級開發中花費大量的時間,采用高級相關技術工程師去重頭開發自己的持久層不是很可行的,Hibernate作為持久層中間件,它的具體實現對上層是透明的,開發者無需關系它的具體實現,只需要知道如何訪問他的接口就行了。


          2、什么是ORM?

          ORM(Object-Relation
          Mapping)是對象-關系映射,當下流行的開發語言都是面向對象的,如Java,C#。而當下流行的DB大多都是面向關系的,也就是關系數據庫。這樣在面向對象與面向關系之間需要一個橋梁,才能使二者協同無縫聯合工作,ORM就是這個橋梁。映射關系如下:

          [類]<=>[表]
          [對象實例]<=>[表的行] [屬性]<=>[表的列]

          那么這些映射關系是如何制定的呢?——只需要一個映射文件(XML)即可,在其中配置持久化類與DB表的映射關系后,ORM中間件在運行時參照此文件內容,對象持久化的DB中或把DB中數據加載到持久化類中。

          Hibernate就是一個卓越的ORM中間件。


          3、ORM是怎么映射的?


          要把類的屬性與DB表的Field對應,ORM就必須能識別類的屬性名字和數值。這就必須才用反射(Reflection)技術,相信有一定開發經驗的人對此技術都是耳熟能詳了吧,當前主流開發語言都支持此技術,如Java和.net,而且具體用法都如出一轍。當然對于那些只想使用ORM而不關心ORM的具體實現的朋友,這些內容不了解也沒有任何影響。這也恰恰是ORM的好處啊。


          4、Hibernate采用的一個技術


          當配置為自動決定何時把對象數據寫入DB的模式下,Hibernate采用了一個自動識別對象屬性變化的技術。即Hibernate知道持久化類哪些屬性發生了變化,然后據此來決定后便的操作。關于此技術更具體的內容,以后再詳述。


          5、緩存


          從內存中獲取數據要比從DB中獲取數據快得多,所以很多ORM都采用緩存結束來提高持久化效率,Hibernate也不例外。在Session中保留所有已經持久化的對象實例作為緩存,如果需要獲取的數據在緩存中存在,則不去DB中加載。當然緩存中數據與DB中數據的一致性問題,Hibernate就是通過剛剛說過的[識別對象屬性變化]的技術來實現的。


          6、什么是HQL?

          HQL(Hibernate Query
          Language)是Hibernate自己的查詢語句,它與SQL相似,但是HQL是面向對象的,它引用類名及類的屬性名,而不是表名及表的字段名。



          好了,通過以上這些,基本可以了解Hibernate是什么了,可以開始了解Hibernate的核心接口了,Let's Go...

          posted on 2012-04-22 15:50 hantai 閱讀(73) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 芦溪县| 措美县| 中牟县| 慈利县| 吴江市| 开鲁县| 祁阳县| 五原县| 开化县| 扎囊县| 唐海县| 英德市| 江口县| 北流市| 遂宁市| 广东省| 兴宁市| 鹤山市| 长汀县| 永顺县| 南安市| 虹口区| 莫力| 揭东县| 亳州市| 中超| 长葛市| 额尔古纳市| 内乡县| 赣榆县| 贡嘎县| 信丰县| 西畴县| 抚顺市| 柳州市| 礼泉县| 靖宇县| 胶州市| 兖州市| 湄潭县| 梧州市|