Hibernate知識整理1----基礎理論

    前言:ssh等框架是在我們之前的J4架構的基礎上進行的系統性的優化。原始的架構實現由於重複代碼太多,工作量大、團隊在數據邏輯上浪費大量精力、系統耦合性過強,導致開發週期長,修改維護難度大等問題。各種框架的出現很好的解決了這些問題,而其中使用最廣泛的就是SSH和SSM了。

1. hibernate框架的出現

各類框架都是在原始的架構之上結合先進的技術思想進行鍼對性優化而形成的,而hibernate是對於原始架構的DAO層進行優化而形成的框架。
在原始架構項目開發的時候,DAO層使用JDBC與數據庫進行數據對接,每次打開關閉消耗都很大。而實際上,有時候我們也並不僅僅使用一個數據庫,有時候在客戶要求下需要切換不同數據庫,由於不同數據庫之間的語言之間都會存在一定的差異,因此,需要改動的地方很多,工作量太大。hibernate的出現恰好解決了這些問題。**hibernate框架是基於ORM框架思想而形成的,ORM即對象關係映射框架。**ORM通過對象關係映射機制來解決硬編碼SQL問題、支持多數據庫。對象即數據封裝對象,hibernate是通過對象映射關係來進行數據操作的。也就是說hibernate操作的是數據封裝對象,而以前我們操作的是數據項,因此使用hibernate的HQL可以翻譯成其他數據庫語言。也就是說,在切換數據庫的時候,我們僅僅需要修改配置文件就行了。hibernate雖說沒有以前那麼靈活了,但是方便很多。(使用這些框架不可避免的會造成一些性能上的損耗)

目前行業中的ORM框架有:
Hibernate:最流行
iBatis:更靈活、但要自己寫sql語句、代碼量比較大
TOPLINK(oralce):商業使用要收費
Entity EJB:重量級、高花費,必須運行在EJB容器(服務器)

2.對於1的補充
hibernate通過session對象(不是http的session,數據庫操作工具)來簡化數據庫操作,session對象提供一系列數據庫操作功能,因此,開發人員無需處理數據庫連接獲取等問題。

hibernate內置的連接池很差,而且沒有定期檢查連接是否有效這些機制,因此建議使用第三方連接池。hibernate可以接入C3P0等連接池,只需完善配置文件即可。

Hibernate中的session對象除了提供數據庫操作功能,還爲“數據對象”提供對象池:一級緩存。

假如一個事務中,創建一個session對象,在該事務過程中,通過session查詢過的對象,在緩存中都會有保存,再次取出時,如果數據沒有改變,就無需再次查詢數據庫。
每個session對象都有自己獨立的對象池(緩存)。

ORM還提供了很好的性能優化解決方案,通過池化(緩存)等技術來優化數據庫連接、持久化對象生命週期的管理。

3.使用
只是簡單整理一下使用流程:
1.增加JAR支持
2.寫hibernate配置文件 hibernate.cfg.xml ,放在SRC根目錄下
3.爲每個表寫一個對應的實體類DTO
4.爲每個表寫一個 實體類<—>表 的映射文件 *.hbm.xml,通常放在同實體類同一個包中.
(也可以不寫hbm.xml,可以通過註解的方式去定義映射關係)
5.將*.hbm.xml映射文件註冊到 hibernate.cfg.xml 中
6.編寫代碼進行測試

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章