首頁 >Java >java教程 >Java中關於Hibernate的基本原理詳解

Java中關於Hibernate的基本原理詳解

黄舟
黄舟原創
2017-09-09 11:01:021587瀏覽

持久化是將程式資料在持久狀態和瞬時狀態間轉換的機制。 JDBC就是一種持久化機制。文件IO也是一種持久化機制。以下透過本文來跟大家介紹Java中Hibernate的基本原理,需要的朋友參考下吧

在開始學Hibernate之前,一直就有人說:Hibernate並不難,無非是對JDBC進一步封裝。一句不難,難道是真的不難還是眼高手低?

      如果只是停留在使用的層面上,我相信什麼技術都不難,看看別人怎麼做的,你也可以很快上手。

      這不就是學習的最終目的嗎?

      則不是,絕對不是。我們要了解這門技術的基本概念,它到底是什麼,它是做什麼的,它有什麼優缺點。下面我就帶領大家一起回顧Hibernate:

什麼是Hibernate?

      Hibernate,翻譯過來是冬眠的意思,剛好現在已經進入秋季,世間萬物開始準備冬眠了。其實對於物件來說就是持久化。   

    持久化(Persistence),即將資料(如記憶體中的物件)儲存到可永久保存的儲存裝置中(如磁碟)。持久化的主要應用是將記憶體中的物件儲存在關係型的資料庫中,當然也可以儲存在磁碟檔案中、XML資料檔案中等等。 

持久化是將程式資料在持久狀態和瞬時狀態間轉換的機制。

JDBC就是一種持久化機制。文件IO也是一種持久化機制。

日常持久化的方法:

1、冷藏鮮肉,吃的時候再解凍的方法也是。

2、將水果做成罐頭的方法也是。

我們從三個角度理解Hibernate: 

一、Hibernate是對JDBC進一步封裝

       原來沒有使用Hiberante做持久層開發時,存在很多冗餘,如:各種JDBC語句,connection的管理,所以出現了Hibernate把JDBC封裝了一下,我們不用操作數據,直接操作它就行了。

二、我們再從分層的角度來看

       我們知道非常典型的三層架構:表示層,業務層,以及持久層。 Hiberante也是持久層的框架,而且持久層的框架還有很多,例如:IBatis,Nhibernate,JDO,OJB,EJB等等。

三、Hibernate是開源的一個ORM(物件關係映射)框架。

      ORM,即Object-Relational Mapping,它的功能就是在關聯式資料庫和物件之間做了一個對應。從物件(Object)映射到關係式(Relation),再從關係映射到物件。這樣,我們在操作資料庫的時候,不需要再去和複雜SQL打交道,只要像操作物件一樣操作它就可以了(把關聯式資料庫的欄位在記憶體中映射成物件的屬性)。

Hibernate的核心:

     從上圖,我們可以看出Hibernate六大核心接口,兩個主要配置文件,以及他們直接的關係。 Hibernate的所有內容都在這裡了。那我們從上到下簡單的認識一下,每個介面進行一句話總結。

1、Configuration介面:負責設定並啟動Hibernate

2、SessionFactory介面:負責初始化Hibernate

3、Session介面:負責持久化物件的CRUD操作

4、Transaction介面:負責事務

5、Query介面與Criteria介面:負責執行各種資料庫查詢 

注意:Configuration實例是一個啟動期間的對象,一旦SessionFactory創建完成它就被丟棄了。

Hibernate的優/缺點:

優點:

1.更物件化

      以物件化的思考操作資料庫,我們只需要操作對象就可以了,發展更物件化。

2、移植性

      因為Hibernate做了持久層的封裝,你就不知道資料庫,你寫的所有的程式碼都具有可重複使用性。

3、Hibernate是一個沒有侵入性的框架,沒有侵入性的框架我們稱為輕量級框架。

      比較Struts的Action和ActionForm,都需要繼承,且離不開Struts。 Hibernate不需要繼承任何類,不需要實作任何介面。這樣的對象叫POJO對象。

4、Hibernate程式碼測試方便。

5、提高效率,提高生產力。

缺點:

1、使用資料庫特性的語句,將很難調優

2、對大批量資料更新存在問題

3、系統中有大量的攻擊查詢功能 

#總結: 

      Hibernate可以讓我們採用物件化的思維操作關係型資料庫。

總結

#

以上是Java中關於Hibernate的基本原理詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn