1. 程式人生 > >Hibernate入門學習(1)----認識ORM及Hibernate

Hibernate入門學習(1)----認識ORM及Hibernate

1、ORM(物件/關係資料庫對映)

    ORM的全稱: Object /Relation Mapping 物件/關係資料庫對映
    在目前的java、c#等面向物件的程式語言編寫的資料庫應用程式中,最終的資訊最終儲存在關係型資料庫中,我們在應用程式中需要寫很多的sql語句,這就與我們的面向物件的思想就不太符合了,於是就催生了ORM框架。就像下面的,我們有一個學生類,裡面的資訊我們如果要寫到資料庫裡,就要大量的sql語句程式碼,這就很麻煩,而且有很多弊端,

    寫很多的sql語句有什麼弊端呢?
    1、不同的資料庫語法不同,同一個資料庫指令碼,可能在mysql中能使用,但是在T/sql中就不想了。
    2、同一種功能在不同的資料庫中有不一樣的實現方式,比如分頁sql;
    3、過分的依賴sql語句對於程式的移植和維護會造成很大的困難。

其實ORM也可以說是一種思想,一種規範,取決於你自己的理解,ORM是一種框架技術,是關係型資料庫和麵向物件語言的橋樑。

   ORM是將表與表之間的操作,對映成物件和物件之間的操作,就是通過操作實體類來達到操作表的目的。從資料庫提取的資料會自動按你設定的對映要求封裝成特定的物件。之後你就可以通過對物件進行操作來修改資料庫中的資料。這時候你面對的不是資訊的碎片,而是一個形象鮮明的物件。

當我們採用ORM框架之後,應用程式不再直接訪問底層的資料庫,而是以面向物件的方式來操作持久化物件(例如建立、修改、刪除等),而ORM框架則將這些面向物件操作轉換成底層的SQL操作。

正如上圖所示ORM工具的唯一作用就是把持久化物件的操作轉換成對資料庫的操作,從此程式設計師可以以面向物件的方式操作持久化物件,而ORM框架則負責轉換成對應的SQL(結構化查詢語言)操作。

2、Hibernate

    hibernate是一個採用ORM(Object/Relation Mapping物件關係對映)機制持久層的開源框架,其主要核心思想是面向物件,而非面向過程,而這個面向物件則主要通過ORM實現。Hibernate對jdbc進行了輕量級的封裝,其實還是在使用jdbc的思想。
    最簡單的情況下,hibernate把資料表的資料段對映到類的屬性上,那麼這個資料表的定義本身就對應於一個類的定義,而每一個數據行將對映成該類的一個物件。

所以hibernate就是通過將資料表和實體類之間的對映,使得對物件的修改對應資料行的修改,不用考慮關係型的資料庫表,使得程式思考角度完全物件化,更符合面向物件思維,同時也簡化了持久層的程式碼,使邏輯結構更清晰。

Hibernate的角色大致如下:

其餘的ORM框架技術:

    MyBatis:前身是iBatis;
    TopLink:後被Oracle收購,包裝為Oracle ASTopLink;
    EJB:本身就是Javaee的規範;