框架基礎之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)