hibernate 基本原理

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

      若是隻是停留在使用的層面上,我相信什麼技術都不難,看看別人怎麼作的,你也能夠很快上手。架構

      這難道是學習的最終目的嗎?app

      不是,絕對不是。咱們須要瞭解這門技術的基本概念,它究竟是什麼,它是幹什麼的,它有什麼優缺點。下面我就帶領你們一塊兒回顧一下Hibernate:框架


什麼是Hibernate?


      Hibernate,翻譯過來是冬眠的意思,正好如今已經進入秋季,世間萬物開始準備冬眠了。其實對於對象來講就是持久化。學習

 

掃盲--------------------------------------------------------------------------------------------------------測試

      持久化(Persistence),即把數據(如內存中的對象)保存到可永久保存的存儲設備中(如磁盤)。持久化的主要應用是將內存中的對象存儲在關係型的數據庫中,固然也能夠存儲在磁盤文件中、XML數據文件中等等。spa

 

持久化是將程序數據在持久狀態和瞬時狀態間轉換的機制。
 .net

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

平常持久化的方法:
一、將鮮肉冷藏,吃的時候再解凍的方法也是。
二、將水果作成罐頭的方法也是。翻譯

結束----------------------------------------------------------------------------------------------------------

  

咱們從三個角度理解一下Hibernate:

 

1、Hibernate是對JDBC進一步封裝

       原來沒有使用Hiberante作持久層開發時,存在不少冗餘,如:各類JDBC語句,connection的管理,因此出現了Hibernate把JDBC封裝了一下,咱們不用操做數據,直接操做它就好了。
 

2、咱們再從分層的角度來看

       咱們知道很是典型的三層架構:表示層,業務層,還有持久層。Hiberante也是持久層的框架,並且持久層的框架還有不少,好比:IBatis,Nhibernate,JDO,OJB,EJB等等。

 

3、Hibernate是開源的一個ORM(對象關係映射框架

      ORM,即Object-Relational Mapping,它的做用就是在關係型數據庫和對象之間作了一個映射。從對象(Object)映射到關係(Relation),再從關係映射到對象。這樣,咱們在操做數據庫的時候,不須要再去和複雜SQL打交道,只要像操做對象同樣操做它就能夠了(把關係數據庫的字段在內存中映射成對象的屬性)。

 

Hibernate的核心:

 

                 

 

     從上圖中,咱們能夠看出Hibernate六大核心接口,兩個主要配置文件,以及他們直接的關係。Hibernate的全部內容都在這了。那咱們從上到下簡單的認識一下,每一個接口進行一句話總結。

一、Configuration接口:負責配置並啓動Hibernate

二、SessionFactory接口:負責初始化Hibernate

三、Session接口:負責持久化對象的CRUD操做

四、Transaction接口:負責事務

五、Query接口和Criteria接口:負責執行各類數據庫查詢

 

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

 

Hibernate的優/缺點:

 

優勢:

一、更加對象化

      以對象化的思惟操做數據庫,咱們只須要操做對象就能夠了,開發更加對象化。

二、移植性
      由於Hibernate作了持久層的封裝,你就不知道數據庫,你寫的全部的代碼都具備可複用性。

三、Hibernate是一個沒有侵入性的框架,沒有侵入性的框架咱們稱爲輕量級框架。

      對比Struts的Action和ActionForm,都須要繼承,離不開Struts。Hibernate不須要繼承任何類,不須要實現任何接口。這樣的對象叫POJO對象。

四、Hibernate代碼測試方便。

五、提升效率,提升生產力。

 

缺點:

一、使用數據庫特性的語句,將很難調優

二、對大批量數據更新存在問題

三、系統中存在大量的攻擊查詢功能

 
總結:

 

      Hibernate可使咱們採用對象化的思惟操做關係型數據庫。這篇博文最主要的目的是從總體上認識Hibernate,內容可能會有點空,不是特別詳細,可是後面會有更加針對性的博文進行講解。敬請期待。

相關文章
相關標籤/搜索