java中Hibernate面試知識點整理
作為常用的框架之一,Hibernate在面試的時候難免會被問到。好在涉及的都是一些理論方面的知識點,比如概念、原理、使用之類的。我們在面試之前可以針對這方面的題目,做一個充足的準備,即使有些人對hibernate框架的瞭解並不深入。下面我們就hibernate框架中常見的面試題帶來介紹。
1. 為什麼要使用 hibernate?
(1).對JDBC做瞭輕量級的封裝,簡化瞭數據訪問層編碼。
(2).Hibernate是一個ORM框架,開發者可以使用面向對象的思想操作數據庫,使用更加方便。
(3) hibernate映射很靈活,支持各種關系數據庫,從一對一到多對多的各種復雜關系。
2.比較hibernate的三種檢索策略優缺點
(1)立即檢索;
優點: 對應用程序完全透明,不管對象處於持久化狀態,還是遊離狀態,應用程序都可以方便的從一個對象導航到與它關聯的對象;
缺點:1.select語句太多;2.可能會加載應用程序不需要訪問的對象白白浪費許多內存空間;
(2)延遲檢索:
優點: 由應用程序決定需要加載哪些對象,可以避免可執行多餘的select語句,以及避免加載應用程序不需要訪問的對象。因此能提高檢索性能,並且能節省內存空間;
缺點: 應用程序如果希望訪問遊離狀態代理類實例,必須保證他在持久化狀態時已經被初始化;
(3)迫切左外連接檢索
優點:對應用程序完全透明,不管對象處於持久化狀態,還是遊離狀態,應用程序都可以方便地沖一個對象導航到與它關聯的對象。使用瞭外連接,select語句數目少;
缺點:可能會加載應用程序不需要訪問的對象,白白浪費許多內存空間;復雜的數據庫表連接也會影響檢索性能;
3.什麼是 ORM 框架?
(Object Relation Mapping)對象關系映射,即通過類與數據庫表的映射關系,將對象持久化到數據庫中。
4.hibernate對象的三種狀態
Hibernate中對象有三種狀態: 臨時狀態(Transient)、持久狀態(Persistent)、遊離狀態(Detached)
臨時狀態:剛剛使用new語句創建,還沒有被持久化,不處於Session的緩存中。處於臨時狀態的狀態的Java對象被稱為臨時對象。
持久化狀態:已經被持久化,加入到Session的緩存中。處於持久化狀態的Java對象被稱為持久化對象。
遊離狀態:已經被持久化,但不處於session的緩存中。處於遊離狀態的Java對象被稱為遊離對象。
5.Hibernate是如何延遲加載?
當Hibernate在查詢數據的時候,數據並沒有存在與內存中,當程序真正對數據的操作時,對象才存在與內存中,就實現瞭延遲加載,他節省瞭服務器的內存開銷,從而提高瞭服務器的性能。
面試題擴展:
1.一般情況下,關系數據模型與對象模型之間有哪些匹配關系(多選)
A)表對應類
B)記錄對應對象
C)表的字段對應類的屬性
D)表之間的參考關系對應類之間的依賴關系
2.以下關於SessionFactory的說法哪些正確?(多選)
A)對於每個數據庫事務,應該創建一個SessionFactory對象
B)一個SessionFactory對象對應一個數據庫存儲源。
C)SessionFactory是重量級的對象,不應該隨意創建。如果系統中隻有一個數據庫存儲源,隻需要創建一個。
D)SessionFactory的load()方法用於加載持久化對象
3.元素有一個cascade屬性,如果希望Hibernate級聯保存集合中的對象,casecade屬性應該取什麼值?(單選)
A)none
B)save
C)delete
D)save-update
5.以下哪些屬於Session的方法?
A)load()
B)save()
C)delete()
D)update()
E)open()
F)close()
到此這篇關於java中Hibernate面試知識點整理的文章就介紹到這瞭,更多相關java之Hibernate面試要點內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- java中Hibernate的狀態總結
- java中mybatis和hibernate的用法總結
- Java面試題沖刺第九天–MyBatis
- Java經典面試題匯總:Mybatis
- Java Hibernate中的持久化類和實體類關系