hibernate面試題彙總
1. 請解釋Hibernate3.2主鍵的生成方式中,native和identity方式的區別。
Native主鍵生成方式會根據不同的底層資料庫自動選擇Identity、Sequence、Hilo主鍵生成方式
特點:根據不同的底層資料庫採用不同的主鍵生成方式。由於Hibernate會根據底層資料庫採用不同的對映方式,因此便於程式移植,專案中如果用到多個數據庫時,可以使用這種方式。
Identity根據底層資料庫,來支援自動增長,不同的資料庫用不同的主鍵增長方式。
特點:與底層資料庫有關,要求資料庫支援Identity,如
MySQl中是auto_increment,
SQL Server 中是Identity,支援的資料庫有MySql、SQL Server、DB2、Sybase和HypersonicSQL。
Identity無需Hibernate和使用者的干涉,使用較為方便,但不便於在不同的資料庫之間移植程式。
2. 請解釋為什麼SessionFactory一般以單利方式使用。
SessionFactory是一個大型物件,而且執行緒安全。在一個程式中只需要一個
3. 請解釋說明hibernate配置檔案中dialect屬性的確切含義。
資料庫方言:多種資料庫擁有不同的語言語法,通過設定dialect指定所用的資料庫,並生成對應語法和語言的sql語句。
4,請解釋說明Hibernate控制下的POJO<物件>會呈現三種狀態,分別是transient、persistenet和detached,請解釋這三種狀態。
暫態:資料庫中沒資料。跟session不相關。沒存過。
遊離態:在資料庫中有記錄,但是在session中沒有。需要手工同步。
持久態:資料庫中有記錄,session中也有這記錄。自動更新
5. 請解釋Session的load方法和get方法的不同;
load 在載入的時候會根據載入策略來載入東西,載入策略預設為延遲載入,即只加載id.,如果需要用其它資料,必須在session關閉之前,去載入某一 個屬性。lazy="true" or "false" 如果載入策略是立即載入,那麼它在載入時會把資料資訊全部載入,這個時候即使,關閉session,因為資料已經全部載入了,也能取得資料
get 會直接採用立即載入策略載入資料,不管你配置的是延遲載入還是立即載入
關於立即載入和延遲載入 不僅只對自己這張表,將來表與表之間有關係時,一樣會起作用。
如果物件不存在 get返回null load拋異常
6.請解釋cascade屬性和-orphan的區別。
: 在執行 時進行關聯操作。
all--orphan: 當一個節點在物件圖中成為孤兒節點時,刪除該節點。比如在一個一對多的關係中,Student包含多個book,當在物件關係中刪除一個book時,此book即成為孤兒節點。
7.請解釋inverse屬性的作用
inverse表“是否放棄維護關聯關係”(在Java裡兩個物件產生關聯時,對資料庫表的影響),在one-to-many和many-to-many的集合定義中使用,inverse="true"表示該物件不維護關聯關係;該屬性的值一般在使用有序集合時設定成false(注意hibernate的預設值是false)。 one-to-many維護關聯關係就是更新外來鍵。many-to-many維護關聯關係就是在中間表增減記錄。
8.請解釋Hibernate查詢中出現的N+1問題,並提出解決方案。
Hibernate在檢索與Customer關聯的Order物件時,使用了預設的立即檢索策略。這種檢索策略存在兩大不足:
(1) select語句的數目太多,需要頻繁的訪問資料庫,會影響檢索效能。如果需要查詢n個Customer物件,那麼必須執行n+1次select查詢語句。這就是經典的n+1次select查詢問題。
(2)在應用邏輯只需要訪問Customer物件,而不需要訪問Order物件的場合,載入Order物件完全是多餘的操作,這些多餘的Order物件白白浪費了許多記憶體空間。
為了解決以上問題,Hibernate提供了其他兩種檢索策略:延遲檢索策略和迫切左外連線檢索策略。延遲檢索策略能避免多餘載入應用程式不需要訪問的關聯物件,迫切左外連線檢索策略則充分利用了SQL的外連線查詢功能,能夠減少select語句的數目。
9.請簡要的描述一下使用Hibernate進行大批量更新的經驗;
直接使用hibernate API 進行批量更新和批量刪除都不推薦,而直接通過JDBC API執行相關的SQl語句或呼叫相關的儲存過程是最佳的方式。
10,請簡要的描述一下使用Hibernate二級快取記憶體的經驗
rnate3的二級快取和session級別的快取一樣都只對實體物件做快取,不對屬性級別的查詢做快取;二級快取的生命週期和sessionFactory的生命週期是一樣的,sessionFactory可以管理二級快取;
ionFactory級別的快取,需要手動配置;所有的session可以共享sessionFactory 級別的快取;(一般把一些不經常變化的實體物件放到sessionFactory級別的快取中,適合放不經常變化的實體物件。)
rante3二級快取的配置和使用方法如下:
必須把包匯入,然後到Hibernate3.2的etc檔案下把複製到工程src目錄下(裡邊的'引數裡邊有詳細英文說明);
說明:是第三方法的快取產品,hiberante只是把它做了整合,還有好多第三方hibernate整合的快取產品,相關說明請查閱hiberante3開發手冊;ehcache是不支援分佈應用的,如果有分散式需求,請換成支援分散式的二級快取產品,hiberate3開發手冊都有相頭說明。配置方法都類似);
rnate3的二級快取預設是開起的,也可以指定開起。
11,Query的list和iterator方法的不同。
list不會使用快取,而iterate會先取資料庫select id出來,然後一個id一個id的load,如果在快取裡面有,就從快取取,沒有的話就去資料庫load。
不管是list方法還是iterate方法,第一次查詢的時候,它們的查詢方式很它們平時的方式是一樣的,list執行一條sql,iterate執行1+N條,多出來的行為是它們填充了快取
查詢快取需要開啟相關類的class快取。list和iterate方法第一次執行的時候,都是既填充查詢快取又填充class快取的。
這裡還有一個很容易被忽視的重要問題,即開啟查詢快取以後,即使是list方法也可能遇到1+N的問題!
-
個人面試自我評價(14篇)
在平日的學習、工作和生活裡,我們都不可避免地要寫自我評價,自我評價是個人對自己思想、願望、行為和個性特點的判斷和評價。那麼自我評價一般是怎麼寫的呢?以下是小編精心整理的個人面試自我評價,僅供參考,大家一起來看看吧。個人面試自我評價1有出色的組織協調本...
-
面試自我評價精選14篇
在日常學習、工作和生活中,我們最不陌生的就是自我評價了,自我評價具有重要的社會功能。你寫自我評價時總是無從下筆?下面是小編整理的面試自我評價,希望對大家有所幫助。面試自我評價篇1本人有良好的審美能力,設計能力,手繪能力。擅長跟業主溝通協調。能帶領小組完...
-
實習生面試 (15篇)
實習生面試1想不到自己這麼快就開始寫面經了,這次的面試談不上失敗,也談不上成功,也就寫出來給大家一個參考和教訓吧!我這次是通過一個學長內推到百度的“商務搜尋部”的web前端開發方面的,HR部門提前通知了我什麼時候面試,因為我學校不在北京,所以就只好電話電面了。...
-
播音主持面試介紹精華15篇
播音主持面試介紹1尊敬的各位老師:你們好!(鞠躬)我叫xx,真的希望這次的考試結果,可以像我的名字那樣逢事可以凱旋而歸。因為,的確從我決定報考播音主持專業開始到現在,自己付出了太多太多。我始終相信,只要有付出就會有收穫。無論黑夜多麼漫長,不論道路多麼崎嶇,只要我的...
相關文章
- 職場必備英語面試口語:What has been your biggest
- 關於期末的英語作文:The Benefits of Keeping Diaries
- 外研社英語Module5Unit2《There are fourteen peaches》課後反思
- 編寫談論考試的對話 Talking about the Examination
- 口語訓練教材:feast your eyes on; hit between the eyes
- Working English Job Advertisement英文求職
- 英語四級考試備考作文Protecting the Intangible Cultural Heritages訓練題
- 人腦和電腦The Brain and the Computer英語作文
- in the park Unit 1 What are they doing ?教學素材
- To Be Or Not To Be, That Is the Question英文讀後感