【SSH進階之路】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可以使我們採用物件化的思維操作關係型資料庫。這篇博文最主要的目的是從整體上認識Hibernate,內容可能會有點空,不是特別詳細,但是後面會有更加針對性的博文進行講解。敬請期待。