java面試罕見成績之Hibernate總結。本站提示廣大學習愛好者:(java面試罕見成績之Hibernate總結)文章只能為提供參考,不一定能成為您想要的結果。以下是java面試罕見成績之Hibernate總結正文
重要從以下十幾個方面臨Hibernate做總結,包含Hibernate的檢索方法,Hibernate中對象的狀況,Hibernate的3種檢索戰略是甚麼,分離實用於哪一種場所,ORM處理的不婚配成績, Hibernate映照繼續關系的3種方法,Session的find()辦法和Query接口的差別等方面成績的總結,詳細內容以下:
1 Hibernate的檢索方法
Ø 導航對象圖檢索(依據曾經加載的對象,導航到其他對象。)
Ø OID檢索(依照對象的OID來檢索對象。)
Ø HQL檢索(應用面向對象的HQL查詢說話。)
Ø QBC檢索(應用QBC(Qurey By Criteria)API來檢索對象。 QBC/QBE離線/在線)
Ø 當地SQL檢索(應用當地數據庫的SQL查詢語句。)
包含Hibernate的檢索方法,Hibernate中對象的狀況,Hibernate的3種檢索戰略是甚麼,分離實用於哪一種場所,ORM處理的不婚配成績, Hibernate映照繼續關系的3種方法,Session的find()辦法和Query接口的差別等方面成績的總結
Ø 暫時狀況(transient):方才用new語句創立,還沒有被耐久化,不處於Session的緩存中。處於暫時狀況的Java對象被稱為暫時對象。
Ø 耐久化狀況(persistent):曾經被耐久化,參加到Session的緩存中。處於耐久化狀況的Java對象被稱為耐久化對象。
Ø 游離狀況(detached):曾經被耐久化,但不再處於Session的緩存中。處於游離狀況的Java對象被稱為游離對象。
3 Hibernate的3種檢索戰略是甚麼,分離實用於哪一種場所
Ø 立刻檢索
長處:對運用法式完整通明。
缺陷:select語句數量多。
實用:類級別。
Ø 延遲檢索
長處:由運用法式決議加載哪些對象,可以免履行過剩的select語句和防止加載不須要拜訪的對象,節儉內存空間,進步檢索效力。
缺陷:運用法式假如要拜訪游離態的署理類實例,必需包管它在耐久化時曾經被初始化。
實用:一對多或多對多聯系關系。運用法式不須要立刻拜訪或許基本不會拜訪的對象。
Ø 急切左外銜接檢索
長處:對運用法式完整通明,不論對象處於耐久化狀況照樣游離狀況,運用法式都可以便利的從一個對象導航到另外一個與它相干聯的對象。應用了外銜接,select語句數量少。
缺陷:能夠會加載法式不准要拜訪的對象。龐雜的數據庫表銜接抽象檢索機能。
實用:一對一或多對一聯系關系。運用法式須要立刻拜訪的對象。數據庫體系具有優越的表銜接機能。
4 ORM處理的不婚配成績(域模子與關系模子之間存在的不婚配)
Ø 域模子是面向對象的,關系模子是面向關系的。
Ø 域模子中有繼續關系,關系模子中不克不及直接表現繼續關系。
Ø 域模子中有多對多聯系關系關系,關系模子中經由過程銜接表來表現多對多聯系關系關系。
Ø 域模子中有雙向聯系關系關系,關系模子中只要單向參照關系,並且老是many參照one方。
Ø 域模子倡導精粒度模子,關系模子倡導粗粒度模子。
5 Hibernate映照繼續關系的3種方法
Ø 全部的繼續系統就用一張表(tableper hierarchy)
Ø 每一個子類一張表,寄存子類所獨有的屬性(tableper subclass)
Ø 每一個詳細類一張表(union-subclass),保留是子類完全信息(table per concrete )
6 Session的find()辦法和Query接口的差別
Session類的find()辦法和Query接口都支撐HQL檢索方法。這二者的差別在於,前者只是履行一些簡略HQL查詢語句的便捷辦法,它不具有靜態綁定參數的功效,並且在Hibernate3.x版本中,曾經镌汰了find()辦法;而Query接談鋒是真實的HQL查詢接口,它供給了以上列出的各類查詢功效。
7 Hibernate聯系關系關系設置裝備擺設
Ø 一對一
Ø 一對多
Ø 多對多
8 簡述Session的特色
Ø 不是線程平安的,是以在設計軟件架構時,應當防止多個線程同享統一個Session實例。
Ø Session實例是輕量級的,所謂輕量級是指它的創立和燒毀不須要消費太多的資本。這意味著在法式中可以常常創立或燒毀Session對象,例如為每一個客戶要求分派零丁的Session實例,或許為每一個任務單位分派零丁的Session實例。
Ø 在Session中,每一個數據庫操作都是在一個事務(transaction)中停止的,如許便可以隔分開分歧的操作(乃至包含只讀操作)。
9 Hibernate中采取XML文件來設置裝備擺設對象-關系映照的長處
Hibernate既不會滲入滲出到下層域模子中,也不會滲入滲出到基層數據模子中。軟件開辟人員可以自力設計域模子,不用強制遵照任何標准。數據庫設計人員可以自力設計數據模子,不用強制遵照任何標准。對象-關系映照不依附於任何法式代碼,假如須要修正對象-關系映照,只需修正XML文件,不須要修正任何法式,進步了軟件的靈巧性,而且使保護加倍便利。
10 Session的緩存的感化
Ø 削減拜訪數據庫的頻率。運用法式從內存中讀取耐久化對象的速度明顯比到數據庫中查詢數據的速度快多了,是以Session的緩存可以進步數據拜訪的機能。
Ø 包管緩存中的對象與數據庫中的相干記載堅持同步。當緩存中耐久化對象的狀況產生了變換,Session其實不會立刻履行相干的SQL語句,這使得Session可以或許把幾條相干的SQL語句歸並為一條SQL語句,以便削減拜訪數據庫的次數,從而進步運用法式的機能。
11 多事務並發運轉時的成績
Ø 第一類喪失更新
Ø 髒讀
Ø 虛讀/幻讀
Ø 弗成反復讀
Ø 第二類喪失更新
12 session的清算和清空的差別
Ø session清算緩存是指依照緩存中對象的狀況的變更來同步更新數據庫;(Hibernate包括了三類session的Flush形式)
Ø 清空是session消除部門或全體對象或許session封閉;
13 Hibernate任務道理及為何要用
Ø 道理
1.讀取並解析設置裝備擺設文件
2.讀取並解析映照信息,創立SessionFactory
3.翻開Sesssion
4.創立事務Transation
5.耐久化操作
6.提交事務
7.封閉Session
8.封閉SesstionFactory
Ø 為何要用
1.對JDBC拜訪數據庫的代碼做了封裝,年夜年夜簡化了數據拜訪層繁瑣的反復性代碼。
2.Hibernate是一個基於JDBC的主流耐久化框架,是一個優良的ORM完成。他很年夜水平的簡化DAO層的編碼任務
3.hibernate應用Java反射機制,而不是字節碼加強法式來完成通明性。
4.hibernate的機能異常好,由於它是個輕量級框架。映照的靈巧性很精彩。它支撐各類關系數據庫,從一對一到多對多的各類龐雜關系。
14 Hibernate延遲加載
1.Hibernate2延遲加載完成:a)實體對象 b) 聚集類型(Collection)
2.Hibernate3 供給了屬性的延遲加載功效
當Hibernate在查詢數據的時刻,數據並沒有存在與內存中,當法式真正對數據的操作時,對象才存在與內存中,就完成了延遲加載,他節儉了辦事器的內存開支,從而進步了辦事器的機能。
15 Hibernate的緩存機制
1.一級緩存又叫外部緩存存在Hibernate,屬於運用事務級緩存
2.二級緩存
a) 運用及緩存
b) 散布式緩存
前提:數據不會被第三方修正、數據年夜小在可接收規模、數據更新頻率低、統一數據被體系頻仍應用、非症結數據。
c) 第三方緩存的完成
16 優化Hibernate
1.應用雙向一對多聯系關系,不應用單向一對多
2.靈巧應用單向一對多聯系關系
3.不消一對一,用多對一代替
4.設置裝備擺設對象緩存,不應用聚集緩存
5.一對多聚集應用Bag,多對多聚集應用Set
6.繼續類應用顯式多態
7.表字段要少,表聯系關系不要怕多,有二級緩存撐腰
以上內容是針對java面試比擬罕見的Hibernate總結,願望可以或許贊助到年夜家。