資料庫操作是當今傳統應用軟體不可缺少的一部分,幾乎所用的應用性系統和互動性軟體都離不開資料庫的支援,所以對資料庫資料庫的操作也是一個必不可少的工作,在java的世界裡,傳統的資料庫訪問就是jdbc資料庫訪問,剛開始學習的時候應該還能滿足我們的需求,但真正在實際應用中,其繁瑣的操作,開發效率低效,代碼冗餘等不可避免的缺點也是大家有目共睹的,所以,一套高效簡便的資料庫訪問架構在這種繁瑣工作中誕生了,這就是我們如今java世界裡風靡全球的Hibernate架構(這個應該不誇張吧),所以從今天開始,我和大家就一起進入hibernate的複習。
Hibernate百度名片:
Hibernate是一個開放原始碼的對象關係映射架構,它對JDBC進行了非常輕量級的對象封裝,使得Java程式員可以隨心所欲的使用對象編程思維來操縱資料庫。 Hibernate可以應用在任何使用JDBC的場合,既可以在Java的用戶端程式使用,也可以在Servlet/JSP的Web應用中使用,最具革命意義的是,Hibernate可以在應用EJB的J2EE架構中取代CMP,完成資料持久化的重任。
從上邊百度名片中,我們可以看出:
1) 其實hibernate底層依然是jdbc實現的,只不過jdbc的繁瑣操作都讓架構來替我們做了,程式員已經從繁瑣的jdbc操作中解脫出來了。
2) Hibernate是一個對象關係映射模型,也就是說,它主要操作的是對象和關係之間的映射,對象,即為我們java中類的對象,只不過類一般是一些實體類
3) Hibernate不僅僅是在web上的應用程式框架,這是很多初學者的任務,認為hibernate只是用在web開發中的。其實這是一個很錯誤的觀點
持久化:
上面我們看出hibernate主要完成的是一個資料持久化的重任,很多人應該想了,這個,持久化是什麼啊?下面我們就來說一下這個持久化:持久化是將程式資料在持久狀態和瞬時狀態間轉換的一種機制,持久化的主要應用是將記憶體中的Object Storage Service在關係型的資料庫中,當然也可以儲存在磁碟檔案中、XML資料檔案中等等。
(1)瞬時狀態(transient)
儲存在記憶體中的資料。程式退出後,資料就消失了。
(2)持久狀態(Persisten)
在一定周期內保持不變就是持久化,持久化是針對時間來說的. 資料庫中的資料就是持久化了的資料,只要你不去刪除或修改. 比如在IE瀏覽器中一次Session會話中Session物件變數也是不變的,是Session容器中持久化 ,對象持久化的方式有很多種,根據周期不同有,page,Session,Application,
hibernate為應用程式提供了高效的O/R關係映射和查詢服務,為物件導向的領域模型到傳統的關係型資料庫的映射,提供了一個使用方便的架構。他也是對對象持久化一個很好的實現。簡單樣本一下:
對象關係映射
從上邊我們可以看出,Hibernate是一個開放原始碼的對象關係映射架構,對象/關聯式資料庫映射(object/relational mapping(ORM))這個術語表示一種技術,用來把物件模型表示的對象映射到基於SQL的關聯式模式資料庫結構中去。ORM,即Object-
Relational Mapping(對象關係映射),它的作用是在關係型資料庫和業務實體物件之間作一個映射,這樣,我們在具體的操作業務對象的時候,就不需要再去和複雜的 SQL語句打交道,只要像平時操作對象一樣操作它就可以了。 對象關係映射(ORM)提供了概念性的、易於理解的模型化資料的方法。ORM方法論應當基於三個核心原則:
簡單:以最基本的形式建模資料。
傳達性:資料庫結構被任何人都能理解的語言文檔化。
精確性:基於資料模型建立正確標準化了的結構。
下面我們就一起來認識一下hibernate,Hibernate能做什嗎?
Hibernate能協助我們利用物件導向的思想,開發基於關係型資料庫的應用程式
第一:將對象資料儲存到資料庫
第二:將資料庫資料讀入對象中
Hibernate體繫結構:
一個非常簡要的Hibernate體繫結構的概要圖:
從這個圖可以看出,Hibernate使用資料庫和配置資訊來為應用程式提供持久化服務(以及持久的對象)。
我們來更詳細地看一下Hibernate運行時體繫結構。由於Hibernate非常靈活,且支援多種應用方案,所以我們這隻描述一下兩種極端的情況。“輕型”的體繫結構方案,要求應用程式提供自己的JDBC 串連並管理自己的事務。這種方案使用了Hibernate API的最小子集:
“全面解決”的體繫結構方案,將應用程式層從底層的JDBC/JTA API中抽象出來,而讓Hibernate來處理這些細節。
好了,hibernate基本概念和體繫結構就先介紹到這,下一篇部落格我將會和大家一起來開發我們的第一個hibernate應用程式,謝謝大家支援。