JavaRush /Java Blog /Random-TW /Hibernate 面試問題
Dr-JohnZoidberg
等級 41
Киев

Hibernate 面試問題

在 Random-TW 群組發布
本文是對國外文章的翻譯和改進(文末列出了資源清單)。擴展了一些問題的答案,提供了第三方資源的鏈接,其中包含閱讀過程中可能出現的答案。1)什麼是休眠?它是一個將實體物件關係映射到傳統關係資料庫的框架。此框架的主要特點: 1)資料庫中表格的自動產生和更新;2)由於對資料庫的主要查詢(保存、更新、刪除和搜尋)都以框架的方法呈現,因此大大減少了開發人員編寫的程式碼;3) 提供類別SQL語言的使用(HQL-hibernate查詢語言)。HQL 查詢可以與資料物件(為使用資料庫而準備的 POJO 類別)一起編寫。2) 如何冬眠對程式設計有幫助嗎?Hibernate 實現了許多功能,大大簡化了開發人員的工作。— 這些特性之一是 hibernate 允許開發人員避免編寫大多數 SQL 查詢(它們已經實現,您只需要使用框架提供的方法)。— 在底層,Hibernate 有許多有用的工具可以顯著加快應用程式的速度,其中最值得注意的是兩層快取以及微調惰性和獲取提取。— 在資料庫本身產生表。3) 設定 Hibernate 工作的方法。有四種方法可以設定 Hibernate 的工作: - 使用註解;- hibernate.cfg.xml;- 休眠屬性;- 持久性.xml。最常見的設定方法:透過註解和persistence.xml文件,至於hibernate.properties和hibernate.cfg.xml文件,那麼hibernate.cfg.xml更重要(如果應用程式有這兩個文件,那麼設定來自hibernate.cfg文件被接受。xml)。使用註釋進行配置雖然方便,但並不總是可行;例如,如果您希望針對不同的資料庫或不同的情況有不同的實體配置,那麼您應該使用 xml 設定檔。4)Hibernate使用了哪些關鍵介面?每個 Hibernate 相關應用程式都會用到五個關鍵介面: - Session 介面;- SessionFactory介面;— 配置介面;— 交易介面;— 查詢和條件介面。5)Hibernate中Session介面的作用是什麼?Session是負責與資料庫通訊的主要介面。它還有助於建立請求物件來獲取持久性物件。(持久性對象 - 已經存在於資料庫中的對象;請求對象 - 當我們收到資料庫中查詢結果時所獲得的對象,應用程式正是透過它來運作的)。Session物件可以從SessionFactory取得: Session session = sessionFactory.openSession(); Session介面的作用:是jdbc連接資料庫的包裝器;(https://ru.wikipedia.org/wiki/Java_Database_Connectiv..) - 是一個事務工廠(根據官方文件事務) - 允許應用程式定義工作單元,這本質上意味著事務定義與資料庫相關的操作的邊界)。— 是強制一級快取的保管人。6)Hibernate中SessionFactory介面的作用是什麼?我們從SessionFactory物件中取得Session類型的物件。整個應用程式只有一個SessionFactory,它在應用程式啟動時被初始化。SessionFactory 快取應用程式在執行期間經常使用的元資料和 SQL 查詢。它也快取在其中一項事務中接收到的信息,並可在其他事務中使用。可以使用以下呼叫來取得 SessionFactory 物件:SessionFactory sessionFactory = 設定.buildSessionFactory(); 7)Hibernate中提供了哪些類型的集合?包、集合、列表、地圖、陣列。8) 什麼是 Bag 類型集合以及為什麼使用它?在其實作上,Bag集合類型與Set非常相似,不同之處在於Bag可以儲存重複值。Bag 儲存未索引的元素清單。資料庫中的大多數表都具有顯示資料元素相對於彼此的位置的索引;這些索引在表中表示為單獨的列。透過物件關係映射,索引列的值被映射到 Array 中的索引、List 中的索引或 Map 中的鍵。如果需要取得不包含索引資料的物件集合,那麼可以使用Bag或Set類型的集合(集合包含未排序形式的數據,但可以根據請求進行排序)。9) load(); 方法的操作有何不同?和獲取();?載入()方法;通常在您不確定所要求的物件是否已在資料庫中時使用。如果沒有找到該對象,則該方法拋出異常;如果找到該對象,該方法返回一個代理對象,該代理對像是位於數據庫中的對象的鏈接(尚未發出數據庫請求,一種的懶惰檢索),當當我們直接請求資料庫時,我們透過代理物件直接存取所需的物件。get() 方法;然後使用時,您不能 100% 確定所要求的物件是否在資料庫中。在存取不存在的物件的情況下,get();方法 將返回 null。如果找到對象,則呼叫 get() 方法;將傳回物件本身並立即進行資料庫查詢。10) Hibernate 中的延遲獲取是什麼?Hibernate 中的延遲簽出類型與葉(子)實體關聯,並在存在簽出父實體的請求時定義共享簽出策略。一個簡單的例子:有一個實體House。它儲存有關其號碼、街道、公寓數量的資訊以及有關居住在公寓中的家庭的資訊;這些家庭形成相對於 House 實體的子實體。當我們請求有關房屋的信息時,我們可能完全沒有必要知道有關居住在其中的家庭的信息,這裡延遲獲取可以幫助我們,它允許我們配置房屋實體,以便僅提供有關家庭的信息根據請求,這可以顯著降低請求並加快應用程式的速度。©dev-bay 資料庫中的大多數表都具有顯示資料元素相對於彼此的位置的索引;這些索引在表中表示為單獨的列。透過物件關係映射,索引列的值被映射到 Array 中的索引、List 中的索引或 Map 中的鍵。如果需要取得不包含索引資料的物件集合,那麼可以使用Bag或Set類型的集合(集合包含未排序形式的數據,但可以根據請求進行排序)。9) load(); 方法的操作有何不同?和獲取();?載入()方法;通常在您不確定所要求的物件是否已在資料庫中時使用。如果沒有找到該對象,則該方法拋出異常;如果找到該對象,該方法返回一個代理對象,該對像是位於數據庫中的對象的鏈接(尚未發出數據庫請求,一種的懶惰檢索),當我們直接請求資料庫時,我們透過代理物件直接存取所需的物件。get() 方法;然後使用時,您不能 100% 確定所要求的物件是否在資料庫中。在存取不存在的物件的情況下,get();方法 將返回 null。如果找到對象,則呼叫 get() 方法;將傳回物件本身並立即進行資料庫查詢。10) Hibernate 中的延遲獲取是什麼?Hibernate 中的延遲簽出類型與葉(子)實體關聯,並在存在簽出父實體的請求時定義共享簽出策略。一個簡單的例子:有一個實體House。它儲存有關其號碼、街道、公寓數量的資訊以及有關居住在公寓中的家庭的資訊;這些家庭形成相對於 House 實體的子實體。當我們請求有關房屋的信息時,我們可能完全沒有必要知道有關居住在其中的家庭的信息,這裡延遲獲取可以幫助我們,它允許我們配置房屋實體,以便僅提供有關家庭的信息根據請求,這可以顯著降低請求並加快應用程式的速度。©dev-bay 資料庫中的大多數表都具有顯示資料元素相對於彼此的位置的索引;這些索引在表中表示為單獨的列。透過物件關係映射,索引列的值被映射到 Array 中的索引、List 中的索引或 Map 中的鍵。如果需要取得不包含索引資料的物件集合,那麼可以使用Bag或Set類型的集合(集合包含未排序形式的數據,但可以根據請求進行排序)。9) load(); 方法的操作有何不同?和獲取();?載入()方法;通常在您不確定所要求的物件是否已在資料庫中時使用。如果沒有找到該對象,則該方法拋出異常;如果找到該對象,該方法返回一個代理對象,該對像是位於數據庫中的對象的鏈接(尚未發出數據庫請求,一種的懶惰檢索),當我們直接請求資料庫時,我們透過代理物件直接存取所需的物件。get() 方法;然後使用時,您不能 100% 確定所要求的物件是否在資料庫中。在存取不存在的物件的情況下,get();方法 將返回 null。如果找到對象,則呼叫 get() 方法;將傳回物件本身並立即進行資料庫查詢。10) Hibernate 中的延遲獲取是什麼?Hibernate 中的延遲簽出類型與葉(子)實體關聯,並在存在簽出父實體的請求時定義共享簽出策略。一個簡單的例子:有一個實體House。它儲存有關其號碼、街道、公寓數量的資訊以及有關居住在公寓中的家庭的資訊;這些家庭形成相對於 House 實體的子實體。當我們請求有關房屋的信息時,我們可能完全沒有必要知道有關居住在其中的家庭的信息,這裡延遲獲取可以幫助我們,它允許我們配置房屋實體,以便僅提供有關家庭的信息根據請求,這可以顯著降低請求並加快應用程式的速度。©dev-bay 當我們透過代理對象直接存取所需對象時,直接查詢資料庫。get() 方法;然後使用時,您不能 100% 確定所要求的物件是否在資料庫中。在存取不存在的物件的情況下,get();方法 將返回 null。如果找到對象,則呼叫 get() 方法;將傳回物件本身並立即進行資料庫查詢。10) Hibernate 中的延遲獲取是什麼?Hibernate 中的延遲簽出類型與葉(子)實體關聯,並在存在簽出父實體的請求時定義共享簽出策略。一個簡單的例子:有一個實體House。它儲存有關其號碼、街道、公寓數量的資訊以及有關居住在公寓中的家庭的資訊;這些家庭形成相對於 House 實體的子實體。當我們請求有關房屋的信息時,我們可能完全沒有必要知道有關居住在其中的家庭的信息,這裡延遲獲取可以幫助我們,它允許我們配置房屋實體,以便僅提供有關家庭的信息根據請求,這可以顯著降低請求並加快應用程式的速度。©dev-bay 當我們透過代理對象直接存取所需對象時,直接查詢資料庫。get() 方法;然後使用時,您不能 100% 確定所要求的物件是否在資料庫中。在存取不存在的物件的情況下,get();方法 將返回 null。如果找到對象,則呼叫 get() 方法;將傳回物件本身並立即進行資料庫查詢。10) Hibernate 中的延遲獲取是什麼?Hibernate 中的延遲簽出類型與葉(子)實體關聯,並在存在簽出父實體的請求時定義共享簽出策略。一個簡單的例子:有一個實體House。它儲存有關其號碼、街道、公寓數量的資訊以及有關居住在公寓中的家庭的資訊;這些家庭形成相對於 House 實體的子實體。當我們請求有關房屋的信息時,我們可能完全沒有必要知道有關居住在其中的家庭的信息,這裡延遲獲取可以幫助我們,它允許我們配置房屋實體,以便僅提供有關家庭的信息根據請求,這可以顯著降低請求並加快應用程式的速度。©dev-bay
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION