架構基礎之Hibernate簡介,架構hibernate簡介
架構基礎之Hibernate簡介
1、什麼是Hibernate?
Hibernate是一個開發原始碼的對象關係映射架構,它對JDBC進行非常輕量級的對象封裝,使得程式員可以隨心所欲地使用對象編程思維來操縱資料庫。Hibernate可以應用在任何使用JDBC的場合,既可以在Java的用戶端程式中使用,也可以在Servlet或JSP的Web應用中。
總之,可以簡單的理解為Hibernate是基於JDBC技術基礎上衍生而來,並在此基礎上使得由原來直接操縱資料庫變成直接操作映射資料表後產生的Java類,從而實現對象編程思維來操縱資料庫。
2、Hibernate理論基礎概要
Hibernate是一個JDO(Java Data Object,Java對象持久化)工具。它的工作原理是通過檔案把值對象和資料庫表之間建立起一個映射關係,這樣我們就只需要操作這些值對象和Hibernate提供的一些基本類,就可以達到使用資料庫的目的。例如,使用Hibernate的查詢,可以直接返回包含某個值對象的列表(List),而不必像傳統的JDBC訪問方式一樣把結果集的資料逐個裝載到一個值對象中,為我們的 編碼工作節省了大量的勞動。Hibernate提供的HQL是一個類SQL語言,它和EJBQL(HQL的一個子集)一樣都提供對象化的資料庫查詢方式,但HQL在功能和使用方式上都非常接近於標準的SQL。
Hibernate的作用是介於Java與JDBC之間的一個持久層,它通過建立與資料庫表之間的映射來操縱資料庫。Hibernate是基於JDBC基礎之上的,在深入瞭解Hibernate理論技術的基礎上,要先瞭解以下三點基礎:資料庫操作的三個階段、ORM對象關係映射、持久層概念。
3、Hibernate理論基礎之資料庫操作
在Hibernate出現之前,對資料庫操作是基於JDBC,這中間經曆了操作JDBC、封裝JDBC、ORM三個階段。
(1)操作JDBC階段
本階段即在調用JDBC串連資料庫的包時,需要自己進行編寫的進行資料庫使用者登入驗證的那段代碼。在這段代碼中可以執行SQL語句進行資料查詢、插入、刪除等。
(2) 封裝JDBC階段
由於僅僅只是操作JDBC,使得在實現不同邏輯功能時,都要重新編寫進行資料庫使用者登陸驗證的那段代碼,使得代碼重複很嚴重。為此,引入了JavaBean的技術,書寫一個DBAccess.java類進行資料庫使用者登陸驗證和資料庫操作,並把其中進行資料庫操作部分封裝成不同的函數,那麼實現後續的邏輯功能時只需調用這些函數即可實現。
(3)ORM階段
在對JDBC進行封裝之後,能夠方便的實現資料庫的操作。但是,在物件導向的編程開發中,資料庫的操作與普通的物件導向的Java代碼,顯然是兩種不同的開發思路。於是就產生了ORM階段——使原來直接操作資料庫變成了直接操作普通的Java類來實現相應的資料庫操作。
4、Hibernate理論基礎之ORM對象關係映射
ORM是Object Relational Mapping的簡稱,即對象關係映射。它是一種為瞭解決物件導向與關聯式資料庫存在的互不匹配技術。簡單地說,ORM是通過使用描述對象和資料庫之間映射的中繼資料,將Java程式中的對象持久化到關聯式資料庫中。下面請看一個使用者實體(建立資料表時,要描述的現實世界中的實現)、資料表(實體建立完後,抽象分析完成資料表建立)、Java類(此處就是ORM要完成的任務而抽象產生的Java類):
圖一:ORM(PS:此處ER圖和資料表user表畫的不規範,僅僅作為示意作用哦)
有可知,ORM實現了資料表到Java對象的映射,這正是ORM的作用。
5、Hibernate理論基礎之持久層概念
ORM是通過使用描述對象和資料庫之間映射的中繼資料,將Java程式中的對象自動持久化到關聯式資料庫中。由此便引入了以下兩個新概念:
(1)持久化:就是對資料和程式狀態的保持。大多數情況下特別是企業級應用,資料持久化往往也就意味將記憶體中的資料儲存到磁碟上加以固化,而持久化的實現過程則大多通過各種關聯式資料庫來完成。
(2)持久層:把資料庫實現當做一個獨立邏輯拿出來,即資料庫程式是在記憶體中的,為了使程式運行結束後狀態得以儲存,就要儲存到資料庫。持久層是在系統邏輯層面上,專致於實現資料持久化的一個相對獨立的領域。
持久層的目的是通過持久層的架構將資料庫儲存服務從服務層中分離出來,而Hibernate是目前最流行的持久層架構。
6、Hibernate上機操作簡單一實例
首先,簡要說一下Hibernate的開發流程,主要分為以下五步:
(1)建立Hibernate的設定檔:該檔案負責初始化Hibernate配置,包括資料庫配置和對應檔的配置;
(2)建立Hibernate的對應檔:每一個資料表對應一個對應檔,該檔案描述了資料庫中表的資訊,也描述了對應的持久化類的資訊;
(3)建立持久化類:每一個類對應於資料庫表,通過對應檔進行關聯;
(4)面向Web應用程式層, 編寫DAO層:通過HibernateAPI編寫訪問資料庫的代碼;
(5)面向Web應用程式層,編寫Service層: 編寫業務層實現,調用DAO層類代碼。
具體關係流程如二所示:
圖二:Hibernate開發流程圖
最後,最為核心的也就是Hibernate上機操作簡單一實例操作步驟:
在此推薦一篇部落格,講解超詳細哦:http://www.cnblogs.com/xwdreamer/archive/2010/09/23/2297087.html
(PS:另外附一個在MyEclipse中實現自動產生Hibernate對應檔和實體類的教程:http://jingyan.baidu.com/article/456c463b99f4370a583144a8.html)