hibernate總結

引言

對應用程序還說,大部分都會涉及到訪問數據庫,將數據持久化到數據庫的問題。目前Java中共有5種常用的實現持久化的模式,分別是:JDBC直接訪問數據庫、主動域對象模式、CMP模式、ORM模式、JDO模式。而hibernate正是運用ORM模式的一種框架,它憑藉自身爲輕量級ORM 模型的優勢,逐步確立了在 Java ORM 架構中領導地位,甚至取代複雜而又繁瑣的 EJB 模型而成爲事實上的 Java ORM 工業標準。


hibernate的優點

1、Hibernate是一個開放源代碼的對象關係映射框架。

2、它對JDBC進行了非常輕量級的對象封裝,沒有侵入性,移植性比較好。

3、Hibernate可以應用在任何使用JDBC的場合

4hibernate使得開發更加面向對象,大大提高了生產力


hibernate是持久化技術的一種實現,想真正理解hibernate,就必須瞭解持久化對象的三種狀態。

持久化對象的三種狀態


transient:瞬態或者自由態 

它是由new命令創建的對象,與其他普通對象一樣,系統爲其開闢一塊內存空間。此時該瞬時對象在內存孤立存在,跟數據庫沒有關係,也不受session的管理。

 

如果長時間沒有變量對該對象進行引用,它將被java虛擬機回收。

 

當調用sessionsave()saveOrUpdate()方法時,瞬時對象與數據庫相關聯,並將數據對應的插入數據庫中,此時該瞬時對象轉變成持久化對象。 

 

persistent:持久化狀態 

處於該狀態的對象在數據庫中存在與之對應的記錄,並擁有一個持久化標識,同時,受session的管理。

 

通過sessionget()load()find()等方法生成的對象爲持久對象。

當調用sessiondelete()方法時,對應的持久對象就變成瞬時對象,數據庫中與之對應的數據會被刪除,該對象不再與數據庫的記錄關聯。 

當調用sessionclose()clear()evict()之後,持久對象變成脫管對象。

 

detached:脫管狀態或者遊離態 

脫管對象一定是由持久對象轉化而來,它同樣不受session管理,但與瞬時態對象不同的是,脫管對象仍然擁有數據庫的識別值,也就是數據庫中存在與之對應的數據,所以脫管對象可以執行update方法。

 

當調用sessionupdate()saveOrUpdate()lock()方法,脫管對象轉變成持久對象。 

 

同瞬時態對象一樣,如果長時間沒有變量對該對象進行引用,它將被java虛擬機回收。


Hibernate中核心5個接口

1、Configuration 

Configuration接口負責配置並啓動Hibernate,創建SessionFactory對象。它是在你開始使用Hibernate時遇到的第一個對象。

 

2、SessionFactory

1)SessionFactory接口負責初始化Hibernate。它充當數據存儲源的代理,並負責創建Session對象。

2)SessionFactory的創建非常消耗資源,整個應用一般只要一個SessionFactory就夠了,只有多個數據庫的時候纔會使用多個SessionFactory。

3)SessionFactory是線程安全的,可以由多個線程訪問SessionFactory共享。

 

 

3、Session(會話)

Session接口被稱爲持久化管理器,主要負責執行被持久化對象的CRUD操作(增刪改查)。但是Session對象是非線程安全的。所以一般一線程一session。它代表與數據庫之間的一次操作。Session通過SessionFactory打開,事務提交後就該關閉,否則再使用可能會發生問題。

 

4、Transaction接口

Transaction接口是Hibernate的數據庫事務接口,它對底層的事務接口做了封裝,使得Hibernate應用可通過一致的Transaction接口來聲明事務邊界,有助於應用在不同的環境容器中移植。

 

5、Query和Criteria接口

QueryCriteria接口是Hibernate的查詢接口,用於向數據庫查詢對象,以及控制執行查詢的過程。它可以使用HQL語言或SQL語句兩種表達方式。


hibernate的幾種映射

hibernate有基本映射、一對一映射、一對多映射、多對一映射、繼承映射、複合主鍵映射、Component映射和集合映射。映射是hibernate中的重點內容,但不是本篇要說的重點,這裏只是宏觀的總結一下。


hibernate的缺點

1、對數據庫操作的封裝比較徹底,導致針對數據庫特性的語句,調優比較困難。

2、對大批量數據更新存在問題

3、不適用於大量查詢統計的業務中。


總結

hibernate只是衆多框架中的一員,說到底,框架還是幫我們實現某一目標的工具,而任何工具都不是萬能的。明確自己的目的,擇優選擇工具。

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