Hibernate學習總結

2021-06-16 20:47:00 字數 1630 閱讀 8239

經過乙個星期的hibernate學習,我自己也有一些體會。

沒有接觸hibernate之前,對於jdbc是深惡痛絕的。jdbc無法直接物件導向,開發效率低,**冗餘,重複性工作太多等等。程式設計也是講效率的,過多的冗餘**,太多的重複性工作使其效率低下。然而,hibernate卻不一樣,它是一種開放源**的關係對映框架,它對jdbc進行了輕量級的物件封裝,大大減少的**的冗餘,減少了各種重複性工作。

既然hibernate有那麼多優點,那麼怎樣學習它才能更有效率呢?我覺得應該從以下幾個方面。

1.物件與資料庫之間的關係。在hibernate中,我們需要建立一種對映,即實體類與表的對映,屬性與表中字段的對映,最後是屬性和主鍵的對映。但是,表之間只能通過外來鍵來表示關聯關係。其它關係都是借助hibernate的配置來實現的。

2.hibernate中有幾個核心介面,configuration(配置)、session(回話)、sessionfactory(會話工廠)、query(查詢)、transaction(事務)。對於資料庫的操作,一般的順序是讀取configuration,建立工廠,開啟,開始事務,進行資料庫操作,提交事務,最後關閉。

3.hibernate中實體物件的三種狀態:1)瞬時狀態(transient)剛用new語句建立,還沒有被持久化,且不處於session的快取中2)持久狀態(persistent)已經被持久化,且加入到session的快取中3)游離狀態(detached)已經被持久化,但不再處於session的快取中.

4 .關係對映。

除了將實體與表進行對映之外,還要將實體的關聯關係與表的關聯關係進行對映。有以下幾種關係對映,(1)單向多對一

對映

(2)單向一對多對映:

(3)多對多對映,我們只需要把它看成兩個一對多就行了。

5.hql的應用,我覺得只要掌握使用hql的四個步驟就行了.得到session,編寫hql語句,建立query,執行查詢得到結果。其實hql和sql表面很像,但是,本質是不同的,hql是物件導向的查詢。

6.除了hql,我又接觸了criteria,hql的查詢功能都能用criteria實現,不同的是hql查詢時基於字串的,因此相對靈活。另外criteria的語法和hql不盡相同,總體感覺,更符合物件導向的思想。

7.hibernate快取記憶體,這部分有難度,hibernate一級快取的生命週期跟session的生命週期一樣,所以也可以將hibernate一級快取稱為session快取。hibernate一級快取是乙個強制的快取記憶體。get()方法會去一級快取中查詢獲取資料(又稱命中資料),並且將查詢結果放置在一級快取中。load()也一樣。對於二級快取,二級快取是乙個可選的快取外掛程式,它由sessionfactory負責管理,所以也常將二級快取稱為sessionfactory快取。由於sessionfactory物件的生命週期和應用程式的整個過程對應,因此二級快取是程序範圍的快取,可以被執行緒共享,所以可能存在併發問題,因此需要採用適當的併發訪問策略。二級快取對實體類是可選的,可以在每個類或每個集合的粒度上配置二級快取。hibernate的二級快取策略,是針對於id查詢的快取策略,對於條件查詢則毫無作用。

Hibernate學習總結

提高我們的開發效率.可以理解成是乙個半成品專案.dao層框架 運算元據庫.以物件導向的方式運算元據庫.orm 思想.物件關係對映.通過對映檔案配置物件與資料庫中表的關係.1 導包 required 驅動包 2 準備實體類 以及 orm元資料 3 建立主配置檔案 4 書寫 測試 hibernate.c...

Hibernate學習總結 7

9.1hibernate提供了下列方法從資料庫中獲取物件 1 通過get 或load 方法按照id獲取物件。2 從乙個已經載入的物件開始,通過系列的get方法訪問被關聯的物件。3 hql查詢獲取單個或系列物件。4 criteria查詢獲取單個或系列物件。5 原生sql查詢獲取單個或系列物件。我們要關...

hibernate總結 快取

hibernate中的快取分兩大類 一級 二級 查詢 why那麼為什麼要使用快取呢?為了降低應用程式對物理資料來源訪問的頻次,從而提高應用程式的執行效能。快取內的資料是對物理資料來源中的資料的複製,應用程式在執行時從快取讀寫資料,在特定的時刻或事件會同步快取和物理資料來源的資料。what 一級快取 ...