java框架之Hibernate框架知識點整理。

渴睡人的眼發表於2018-07-21

ORM(Object Realtion Mapping)對應關係對映。通過對映關係,能夠將物件的資料儲存到資料中,並且能從資料庫中獲取資料儲存到一個物件中。

HIbernate與ORM的關係:Hibernate 是ORM的實現。Hibernate是一個資料持久化層的ORM框架。

HIbernate的優點:簡化了JDBC繁瑣的編碼;對物件導向特性支援良好。可以執行好。

Hibernate的缺點:不適合需要使用資料庫特定優化機制的情況。不適合大規模的批量資料處理。

使用Hibernate的簡單步驟:下載並部署jar檔案-->編寫Hibernate配置檔案-->建立持久化類和對映檔案-->使用Hibernate API。

  • hibernate執行流程圖:

hibernate各個包作用。

配置檔案和對映檔案:配置檔案中需要配置四本一言。對映檔案是資料庫表和javaBean的對映。

五大核心介面:Configuration、SessionFactory、Session、Transaction、Query。

HQL語句:hibernate為適應各種資料庫,建立出自己的sql語句:hql。hql可適用於各種hibernate支援的資料庫。

物件的三種狀態:臨時狀態(Transient),持久化狀態(Persistent),遊離狀態(Detached)。

臨時狀態:也稱作瞬時狀態,該物件既沒有在session中,也沒有在資料庫中。如剛 new 出來的新物件 ,session執行了delete方法之後的物件。

持久化狀態:物件在session中存在,在資料庫表中也存在該資料。如臨時狀態被save,遊離狀態被update,get或者load的資料。

遊離狀態:該物件在資料庫中有識別符號(該物件的id在資料庫中存在)在session中沒有該物件。如session執行了close、clear、evict等方法,處於持久化的物件就變成了遊離狀態。剛new出來的物件,如果資料庫中有它的主鍵,該物件也是遊離狀態。

一級快取:session級別快取,當我們使用了 get/load/find Query等查詢出來的資料,預設在session中就會有一份快取資料,快取資料就是從資料庫將一些資料拷貝一份當道對應的地方。每次獲取資料時,會先從快取中查詢,如果沒有再去資料庫查詢。這樣的好處是提高了查詢效率,減少了對資料庫的直接操作。一級快取不可解除安裝,只要使用了session肯定就用到了session的快取,是hibernate控制的,我們不能手動配置。若不想使用一級快取,則需要自己封裝get方法,每次呼叫session,clear。

二級快取:sessionFactory級別快取,可以做到多個session共享此資料。sessionFactory快取分類:內快取,預製的sql語句。物件和資料庫的對映資訊。外快取,儲存的是我們允許使用的二級快取物件。

二級快取中儲存的物件為大多為1.不經常進行改動的資訊,多次查詢的資訊。2.對資料併發時候的安全沒有要求的資訊

實體之間的關係:一對多,多對一,一對一,多對多。

關係的配置:1.單向關聯和雙向關聯。2.對映檔案的配置。3cascade級聯關係,inverse維護關係方設定,lazy懶載入。4增刪改查程式碼。

事務的隔離級別:

8 Serializable 序列 事務不會產生併發,一個事務執行完成,下一個事務才能開始。

4 repeatable read 可重複讀 當前事務進行讀取資料時,其他事務對同一份資料做的更新操作提交之後,不會在當前事務生效

2 read committed 可讀提交 當前事務進行讀取資料,其他事務對同一份資料進行了修改,如果未提交,不會在當前事務生效

1 read uncommitted 可對未提交 當前事務進行讀取資料,其他事務對同一份資料進行了修改,如果未提交,也會在當前事務生效

樂觀鎖:每次更新資料時候,根據主鍵和現有版本號查詢當前資料,更新成功後,該條資料的版本號在原有基礎上加1,如果在其他的併發事務中同時更新該資料,版本號比現有的版本號低,就無法進行更新。

悲觀鎖:每次取資料時都認為其他執行緒會修改,所以都會加鎖(讀鎖、寫鎖、行鎖等),當其他執行緒想要訪問資料時,都需要阻塞掛起。可以依靠資料庫實現,如行鎖、讀鎖和寫鎖等,都是在操作之前加鎖,在Java中,synchronized的思想也是悲觀鎖。

 

 

 

 

相關文章