前 50 個 Hibernate 面試問題和答案 [對於初學者和有經驗者]
已發表: 2020-12-15目錄
介紹
Hibernate 是 Java 中的一種輕量級、開源技術,在本篇博客中,我們將通過“50 個 Hibernate 面試問題”前五名的答案來了解 Hibernate 的過程和機制。
什麼是休眠?
Hibernate 是一個開源的對象關係映射的輕量級工具。 它提供了一個框架來將面向對象的領域模型映射到基於 Web 的應用程序的關係數據庫。
在我們調整 Hibernate 之前,我們應該問一些關於應用程序需求的問題:
- 我們可以將哪種數據模型用於新項目開發、應用程序設計或數據模型?
- 緩存性能水平如何?
- 我們如何定義簡單或複雜的寫作?
- 可擴展性有什麼用,我們可以在什麼場景下使用它?
- 在什麼情況下自動數據庫版本控制很重要?
- 我們需要 JAVA 的關係持久性嗎?
- Support for Query Language有什麼用,我們可以在什麼場景下使用呢?
- 透明持久性流程及其對項目的影響是什麼?
ORM 工具
它解釋數據創建、數據操作和數據訪問。 它是一種將對象映射到數據庫中存儲的數據的編程方法。

什麼是休眠框架?
Hibernate 是一種基於 Java 的對象關係 ORM 工具映射解決方案。 它是一種對象-關係映射,是將應用程序域模型對象映射到關係數據庫表的編程過程。 它實現了 Java Persistence API 的實現源,提供了作為具有鬆散耦合優勢的 ORM 工具的絕佳選擇。
Hibernate 框架的好處
- 輕量級和快速性能:Hibernate 框架的性能在緩存的幫助下是敏捷的,緩存在 Hibernate 框架內部工作。 Hibernate框架中的緩存分為一級緩存和二級緩存。
- 數據庫自治查詢:HQL(休眠查詢語言)是 SQL 的面向對象的變體。 它創建獨立的數據庫查詢,而無需編寫特定於數據庫的查詢。
- 自動表創建:Hibernate 框架提供了自動生成數據庫表的能力。 無需在數據庫中手動創建表。
- 簡化複雜連接:在 Hibernate 框架中,從聚合表中檢索數據很容易。
- 容納查詢統計和數據庫狀態:Hibernate 維護查詢緩存並提供統計快速結果。
休眠架構
Hibernate 架構整合了許多對象,例如持久對象、會話工廠、事務工廠、連接工廠、會話、事務。
Hibernate架構分為四層:
- Java 應用層
- Hibernate 框架層
- 反手 API 層
- 數據庫層
為什麼要選擇Hibernate進程?
以下是我們在開始調整流程時可以使用的以下技術和流程:
- Hibernate允許開發者確定應用程序中的版本類型字段,可以實時修改數據; 此功能為用戶提供了他們可以保存數據並可以同時對其進行修改。
- Hibernate 實現了對 JPA 註釋的幫助,例如:@Entity、@Table、@Col 等。
- 在 Hibernate 中,連接池是數據庫連接中的一種技術,當我們通過外部工具創建並存儲在緩存中時,這些連接我們可以在將來需要重用以連接到同一個數據庫時從緩存本身中重用我們創建的應用程序
- Hibernate 在任何環境中擴展了最佳程度的可擴展性。 它適用於各種規模的項目,從小型應用程序到數百萬人使用的應用程序。
- 在 Hibernate 中,數據庫版本控制是一個重要的工具,它支持防止更改被其他用戶無意回滾。 它允許在應用程序中記錄版本類型。 當數據更新或存儲時,一個版本類型和時間戳,我們也可以記錄下來進行跟踪。
- Hibernate 實現了透明的持久化,開發者在與 RDBMS 交互的過程中不需要顯式地編寫代碼將數據庫表元組映射到應用程序對象。
- 在 Hibernate 中,事務管理是完成一組語句或命令的方法。 在 Hibernate 中,事務管理由事務接口完成。
考慮使用 Hibernate 而不是 JDBC 的五個理由
- 它解決了對象關係複雜的不匹配問題:
它以面向對象的編程語言和關係數據庫提供了一個快速的解決方案。
示例:數據類型的差異、結構和完整性差異、操作性和事務性異常都可能導致對象關係複雜不匹配。
2.自動對象映射:
JDBC 和 Hibernate 在於它支持自動對象映射這一事實。” “Transparent Persistence”,此方法提供 Hibernate 通過交互將數據庫表繪製到應用程序對象。
- 休眠查詢語言 (HQL)
Hibernate 維護結構化查詢語言 (SQL)。 JDBC 只支持 SQL,Hibernate Query Language (HQL) 與 SQL 有關,因為它是一種面向對象的查詢語言。 為了連接方式,HQL 將查詢解釋為 SQL 查詢,然後可以在數據庫中啟動操作。
- 數據庫獨立性
Hibernate 提供通過 XML 文件映射連接的數據表和應用程序; 如果需要,它提供了將數據傳輸到新數據庫的更好方法。 雖然訪問數據庫的方式,信息是必需的,如果在它的可重用的情況下。 緩存是數據庫性能的重要組成部分,它可以減少時間並實時支持應用程序。
- Hibernate 中的連接池:
Hibernate可以實現更可靠的性能; 它提供“連接池”; 這是一個收集緩存中的數據庫連接的過程。 如果應用程序多次嘗試連接到相同的數據庫,這些連接可以從緩存本身中重用。
Hibernate面試問答
問題:1如何配置Hibernate 編寫執行的SQL 語句並使用綁定參數到日誌文件?
答:以下是以下步驟:
創建兩個不同的日誌部分和日誌級別來記錄執行的 SQL 語句和綁定參數:
- 類別 org.hibernate.SQL 。
- 具有日誌級別 TRACE 的 org.hibernate.type.descriptor.sql 類別。
問題:2描述一下你最喜歡的 Hibernate 框架的特性。
答: ORM工具,Hibernate提供了強大的查詢語言(HQL)
問題:3如何區分實體 Bean 和 Hibernate。
答:實體 bean是容器、類、描述符。 Hibernate是一個工具,可以立即將對象樹持久化到一個類中。
問題:4解釋一下Session對象的處理過程以及我們如何在一級緩存和二級緩存中使用它?
答:第一級緩存:它從每個會話開始,帶有一個“會話”對象。
二級緩存:可以在多個會話之外共享。
問題:5 Hibernate 中的繼承是如何工作的? 實施它的各種策略是什麼?
答:三種繼承:
- 每個層次結構的表
- 每個混凝土類的表
- 每個子類的表
問題:6鎖定在 Hibernate 中是如何工作的? 有哪些可用的鎖定機制?
答:鎖定機制是樂觀和悲觀問題:7 Hibernate 中的事務管理是如何工作的?
答:它在(JTA、JDBC)的幫助下工作。
問題:8 Hibernate 中的延遲加載是什麼?
答:這種機制通過實現類的代理來實現實體及其關聯。
問題:9 Hibernate 中可用的各種獲取策略是什麼?
答案: Join fetching 和 Select fetching
問題:10 Hibernate 中可用的各種獲取策略有哪些?
答: Join-Fetching 和 Select Fetchings 是 Hibernate 中可用的提取。
問題:11 Hibernate中getting()和load()方法有什麼區別?
答案:getting() 和 load() 用於獲取指定標識符的數據。 Get() 方法返回 null,load() 方法拋出 object not found 異常類型的錯誤。

問題:12為什麼不應該將實體類設為final?
答:用於實體綁定。
問題:13解釋分離對象的優缺點。
答:它與過去的 Hibernate 會話有關; 它在數據庫中有描述
問題:14什麼是 Hibernate 查詢語言(HQL)?
答:它基於 OOPS 概念。
問題:15說明SessionFactory接口在Hibernate中的作用。
答:是線程安全對象的進程,可以在應用線程進程中使用
問題:16 Hibernate 比 JDBC 有什麼好處?
答:它提供了最快的性能和可擴展性。
問題:17 描述一些由 Hibernate 維護的數據庫。
答:使用JDBC的關係數據庫。
問題:18如何區分 session.save() 和 session.persist() 方法?
答: Session.save() 用於將對象保存在數據庫中,而 session.persist() 用於暫時的、持久的對象。
Question:19解釋一下update和merge的方法?
答:可用於變換處於分離狀態的對象。
問題:20是否可以進行一對一和多對一的集合映射?
答:它可以用於映射到另一個表中的許多行的表中。
問題:21如何在 Hibernate 中執行事務?
答:借助@transctional 類聲明,我們可以執行事務。
問題:22 Hibernate 中的對象/關係映射在哪裡表示?
答: Hibernate ORM 是一個對象/關係映射。
問題:23你對Light Object的看法是什麼?
答: Session、Query、Criteria、Transaction是Light Object的概念。
問題:24 Hibernate 中的@Transient 是什麼? 這樣做有什麼好處?
答: @Transient應用在javax中,它的持久化包。
問題:25如何結合Struts Spring Hibernate?
答:借助 ContextLoaderPlugIn,我們可以進行組合。
問題:26解釋 Hibernate Log4j Logging。
答:由 log4j.xml 文件和 log4j.properties 文件組成。
問題:27 Hibernate中如何限制並發更新?
答:在悲觀鎖過程的幫助下,我們可以限制並發更新。
問題:28確定 Hibernate 持久類的最佳方法是什麼?
答:有許多最佳方法和最佳實踐可以用於映射持久類及其機制。
問題:29修改持久對像是什麼概念?
回答: 持久對象通過休眠來追求,並在提交請求發生時存儲到數據庫中。
問題:30 Hibernate中的一對多雙向關係是什麼?
答:它是許多視圖的關聯屬性的句柄的引用,作為mappedBy屬性的好處,Hibernate擁有它需要的所有知識。 通過這些過程,我們需要定義一個雙向的多對一關聯。
閱讀:成為全棧開發人員的技能
問題:31 Message Resource Bundle 工作中的值替換是什麼?
答: Hibernate Validator 的 ResourceBundleMessageInterpolator 生成兩個 ResourceBundleLocator 實例,一個用於 UserDefined 驗證標準驗證消息 - defaultResourceBundleLocator 。
問題:32解釋SQL語句執行順序的過程。
答:它是二級緩存,由於外鍵約束不能被破壞:插入,更新,刪除數組元素,插入數組元素,刪除,在它們出現的方向
問題:33如何使用EHCache在Hibernate中設置二級緩存?
答: Terracotta Ehcache是一種現代緩存,用作Hibernate 二級緩存。 它可以作為一個獨立的二級緩存來實踐。
問題:34 Entity Beans和Hibernate的主要區別是什麼?
答:實體 bean繼續由描述符、容器、類執行。 Hibernate只是一種立即將對象樹保存到數據庫中的類層次結構的機制。
問題:35解釋一下使用Hibernate處理加入的步驟?
答:借助 SQL Join,我們可以處理它。
問題:36解釋Hibernate代理的過程?
答: Hibernate 代理當我們調用 Session 時,這裡指的是Hibernate 。 加載()。
問題:37使用Hibernate比使用SQL的主要優勢是什麼?
答:有了 ORM 的實踐和Hibernate的使用,那麼使用 SQL 就是 Hibernate 避免了編寫大規模的查詢。
問題:38解釋一下我們可以在 Hibernate 中使用的設計模式?
答:代理模式、域模型和對像模型是設計模式。
另請閱讀:全棧開發職業生涯
問題:39解釋 Hibernate 的體系結構。
答: Hibernate 有一個分層的架構,可以讓用戶在無需了解底層 API 的情況下進行管理
問:40列出Hibernate支持的數據類型?
答案: IntegerType、FloatType、DoubleType、CharacterType、ShortType。
問題:41什麼是(JDO、CMP)?
答:它的Java 持久性技術。
問題:42 spring和Hibernate的主要區別是什麼?
答: Spring 和 Hibernate 是兩個獨立的框架。 Spring與應用程序的放大流簽約。 Hibernate是關於應用程序和數據庫之間的交互的。
問題:43 Hibernate 什麼時候可以找到 ORM 解決方案?
答: Hibernate 是 Java 的對象/關係映射 (ORM) 解決方案的概念; 術語對象/關係映射涉及將對像模型描述之間的數據映射到關係數據模型描述的過程。
問題:44提到在 Hibernate 中完成事務的分步過程。
答:借助 ACID-> 屬性(原子性、一致性、隔離性和持久性)。
問題:45 Hibernate 中的映射在哪裡?
答: Hibernate 映射是 Hibernate 的特性; 它們組織兩個數據庫表之間的連接,而模型中的屬性。 這使您可以快速推動模型和標準查詢中的關聯。
問題:46你能談談 Hibernate 映射中可能存在的不同類型的關係嗎?
答:一對一、多對一、一對多、多對多。
問題:47在 Hibernate 中我們可以在哪裡定義對象映射?
答:將Java對象轉換為用於存儲數據的 SQL 查詢。
問題:48你能列出 Hibernate 中眾多的集合類型嗎?
答: HashMap、HashSet、TreeSet、Arraylist是Hibernate中的集合類型。
問題:49 Hibernate從數據庫中取數據的過程是怎樣的?
答:借助會話中使用 beginTransaction() API 函數的 Hibernate 標準,我們可以獲取數據。

問題:50通過使用 JPA 註釋 @NamedQuery 和 @NamedNativeQuery 來解釋 Hibernate 映射文件。
答: @NamedQuery 和 @NamedNativeQuery 是 HQL 查詢的類型,它們處理將 HQL 轉換為眾多 SQL 方言的複雜性。
報名參加世界頂尖大學的軟件工程課程。 獲得行政 PG 課程、高級證書課程或碩士課程,以加快您的職業生涯。
結論
我們希望這篇文章能幫助您了解面向初學者和專業人士的 50 大 Hibernate“面試”問題。
如果您有興趣了解有關全棧軟件開發的更多信息,請查看 upGrad 和 IIIT-B 的全棧軟件開發執行 PG 計劃,該計劃專為工作專業人士設計,提供 500 多個小時的嚴格培訓、9 個以上的項目,和任務、IIIT-B 校友身份、實用的實踐頂點項目和頂級公司的工作協助。
