java框架之Hibernate框架知識點整理。
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的思想也是悲觀鎖。
相關文章
- Koa 框架常用知識點整理框架
- Java知識點總結——IO流框架Java框架
- Java常見知識點彙總(⑦)——集合框架Java框架
- Java個人技術知識點總結(框架篇)Java框架
- Java框架學習之Hibernate入門Java框架
- Python基礎知識之Django框架優缺點!PythonDjango框架
- Java容器相關知識點整理Java
- Java基礎知識整理之this用法Java
- 【知識點】C++的日誌框架C++框架
- Java知識整理Java
- Java基礎複習,整理知識點Java
- 【SSH框架】系列之 Spring 整合 Hibernate 框架框架Spring
- 好程式設計師Java培訓面試進階知識點之微服務框架程式設計師Java面試微服務框架
- JavaScript知識點整理JavaScript
- CSS知識點整理CSS
- CANFD知識點整理
- MQTT知識點整理MQQT
- Java基礎知識整理之註解Java
- Hibernate知識點總結
- Python爬蟲知識點四--scrapy框架Python爬蟲框架
- 21-Java-Hibernate框架(一)Java框架
- 高階 Java 面試通關知識點整理Java面試
- 【SSH框架】之Hibernate系列(一)框架
- JAVA框架面試題整理之—第四篇Java框架面試題
- Python基礎知識之常用框架Flask!Python框架Flask
- Java核心技術點之集合框架Java框架
- Hibernate框架框架
- Java基礎知識整理之程式碼塊Java
- Flow 常用知識點整理
- 原生JS知識點整理JS
- Runtime知識點整理
- String知識點整理
- 機器學習知識點整理(三)機器學習
- jQuery面試知識點整理jQuery面試
- 關於 SSH 框架面試知識點的總結框架面試
- Hibernate【快取】知識要點快取
- Hibernate【對映】知識要點
- JAVA高階程式設計之hibernate框架學習二Java程式設計框架