最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java面試常見問題之Hibernate總結

 更新時間:2015年07月21日 17:04:39   作者:風度玉門  
這篇文章主要介紹了在java面試過程中hibernate比較常見的問題,包括Hibernate的檢索方式,Hibernate中對象的狀態(tài),Hibernate的3種檢索策略是什么,Session的find()方法以及Query接口的區(qū)別等方面問題的總結,需要的朋友可以參考下

主要從以下十幾個方面對Hibernate做總結,包括Hibernate的檢索方式,Hibernate中對象的狀態(tài),Hibernate的3種檢索策略是什么,分別適用于哪種場合,ORM解決的不匹配問題, Hibernate映射繼承關系的3種方式,Session的find()方法以及Query接口的區(qū)別等方面問題的總結,具體內容如下:

1  Hibernate的檢索方式

Ø  導航對象圖檢索(根據(jù)已經(jīng)加載的對象,導航到其他對象。)

Ø  OID檢索(按照對象的OID來檢索對象。)

Ø  HQL檢索(使用面向對象的HQL查詢語言。)

Ø  QBC檢索(使用QBC(Qurey By Criteria)API來檢索對象。 QBC/QBE離線/在線)

Ø  本地SQL檢索(使用本地數(shù)據(jù)庫的SQL查詢語句。)

包括Hibernate的檢索方式,Hibernate中對象的狀態(tài),Hibernate的3種檢索策略是什么,分別適用于哪種場合,ORM解決的不匹配問題, Hibernate映射繼承關系的3種方式,Session的find()方法以及Query接口的區(qū)別等方面問題的總結
Ø  臨時狀態(tài)(transient):剛剛用new語句創(chuàng)建,還沒有被持久化,不處于Session的緩存中。處于臨時狀態(tài)的Java對象被稱為臨時對象。

Ø  持久化狀態(tài)(persistent):已經(jīng)被持久化,加入到Session的緩存中。處于持久化狀態(tài)的Java對象被稱為持久化對象。

Ø  游離狀態(tài)(detached):已經(jīng)被持久化,但不再處于Session的緩存中。處于游離狀態(tài)的Java對象被稱為游離對象。
3  Hibernate的3種檢索策略是什么,分別適用于哪種場合
Ø  立即檢索

優(yōu)點:對應用程序完全透明。

缺點:select語句數(shù)目多。

適用:類級別。

Ø  延遲檢索

優(yōu)點:由應用程序決定加載哪些對象,可以避免執(zhí)行多余的select語句以及避免加載不需要訪問的對象,節(jié)省內存空間,提高檢索效率。

缺點:應用程序如果要訪問游離態(tài)的代理類實例,必須保證它在持久化時已經(jīng)被初始化。

適用:一對多或多對多關聯(lián)。應用程序不需要立即訪問或者根本不會訪問的對象。

Ø  迫切左外連接檢索

優(yōu)點:對應用程序完全透明,不管對象處于持久化狀態(tài)還是游離狀態(tài),應用程序都可以方便的從一個對象導航到另一個與它相關聯(lián)的對象。使用了外連接,select語句數(shù)目少。

缺點:可能會加載程序不許要訪問的對象。復雜的數(shù)據(jù)庫表連接形象檢索性能。

適用:一對一或多對一關聯(lián)。應用程序需要立即訪問的對象。數(shù)據(jù)庫系統(tǒng)具有良好的表連接性能。

4  ORM解決的不匹配問題(域模型與關系模型之間存在的不匹配)
Ø  域模型是面向對象的,關系模型是面向關系的。

Ø  域模型中有繼承關系,關系模型中不能直接表示繼承關系。

Ø  域模型中有多對多關聯(lián)關系,關系模型中通過連接表來表示多對多關聯(lián)關系。

Ø  域模型中有雙向關聯(lián)關系,關系模型中只有單向參照關系,而且總是many參照one方。

Ø  域模型提倡精粒度模型,關系模型提倡粗粒度模型。

5  Hibernate映射繼承關系的3種方式
Ø  整個的繼承體系就用一張表(tableper hierarchy)

Ø  每個子類一張表,存放子類所特有的屬性(tableper subclass)

Ø  每個具體類一張表(union-subclass),保存是子類完整信息(table per concrete )

6  Session的find()方法以及Query接口的區(qū)別
Session類的find()方法以及Query接口都支持HQL檢索方式。這兩者的區(qū)別在于,前者只是執(zhí)行一些簡單HQL查詢語句的便捷方法,它不具有動態(tài)綁定參數(shù)的功能,而且在Hibernate3.x版本中,已經(jīng)淘汰了find()方法;而Query接口才是真正的HQL查詢接口,它提供了以上列出的各種查詢功能。

7  Hibernate關聯(lián)關系配置
Ø  一對一

Ø  一對多

Ø  多對多

8  簡述Session的特點
Ø  不是線程安全的,因此在設計軟件架構時,應該避免多個線程共享同一個Session實例。

Ø  Session實例是輕量級的,所謂輕量級是指它的創(chuàng)建和銷毀不需要消耗太多的資源。這意味著在程序中可以經(jīng)常創(chuàng)建或銷毀Session對象,例如為每個客戶請求分配單獨的Session實例,或者為每個工作單元分配單獨的Session實例。

Ø  在Session中,每個數(shù)據(jù)庫操作都是在一個事務(transaction)中進行的,這樣就可以隔離開不同的操作(甚至包括只讀操作)。

9  Hibernate中采用XML文件來配置對象-關系映射的優(yōu)點
Hibernate既不會滲透到上層域模型中,也不會滲透到下層數(shù)據(jù)模型中。軟件開發(fā)人員可以獨立設計域模型,不必強迫遵守任何規(guī)范。數(shù)據(jù)庫設計人員可以獨立設計數(shù)據(jù)模型,不必強迫遵守任何規(guī)范。對象-關系映射不依賴于任何程序代碼,如果需要修改對象-關系映射,只需修改XML文件,不需要修改任何程序,提高了軟件的靈活性,并且使維護更加方便。

10  Session的緩存的作用
Ø  減少訪問數(shù)據(jù)庫的頻率。應用程序從內存中讀取持久化對象的速度顯然比到數(shù)據(jù)庫中查詢數(shù)據(jù)的速度快多了,因此Session的緩存可以提高數(shù)據(jù)訪問的性能。

Ø  保證緩存中的對象與數(shù)據(jù)庫中的相關記錄保持同步。當緩存中持久化對象的狀態(tài)發(fā)生了變換,Session并不會立即執(zhí)行相關的SQL語句,這使得Session能夠把幾條相關的SQL語句合并為一條SQL語句,以便減少訪問數(shù)據(jù)庫的次數(shù),從而提高應用程序的性能。

11  多事務并發(fā)運行時的問題
Ø  第一類丟失更新

Ø  臟讀

Ø  虛讀/幻讀

Ø  不可重復讀

Ø  第二類丟失更新

12  session的清理和清空的區(qū)別
Ø  session清理緩存是指按照緩存中對象的狀態(tài)的變化來同步更新數(shù)據(jù)庫;(Hibernate包含了三類session的Flush模式)

Ø  清空是session清除部分或全部對象或者session關閉;

13  Hibernate工作原理及為什么要用
Ø  原理

1.讀取并解析配置文件

2.讀取并解析映射信息,創(chuàng)建SessionFactory

3.打開Sesssion

4.創(chuàng)建事務Transation

5.持久化操作

6.提交事務

7.關閉Session

8.關閉SesstionFactory

Ø  為什么要用

1.對JDBC訪問數(shù)據(jù)庫的代碼做了封裝,大大簡化了數(shù)據(jù)訪問層繁瑣的重復性代碼。

2.Hibernate是一個基于JDBC的主流持久化框架,是一個優(yōu)秀的ORM實現(xiàn)。他很大程度的簡化DAO層的編碼工作

3.hibernate使用Java反射機制,而不是字節(jié)碼增強程序來實現(xiàn)透明性。

4.hibernate的性能非常好,因為它是個輕量級框架。映射的靈活性很出色。它支持各種關系數(shù)據(jù)庫,從一對一到多對多的各種復雜關系。

14  Hibernate延遲加載
1.Hibernate2延遲加載實現(xiàn):a)實體對象 b) 集合類型(Collection)

2.Hibernate3 提供了屬性的延遲加載功能

當Hibernate在查詢數(shù)據(jù)的時候,數(shù)據(jù)并沒有存在與內存中,當程序真正對數(shù)據(jù)的操作時,對象才存在與內存中,就實現(xiàn)了延遲加載,他節(jié)省了服務器的內存開銷,從而提高了服務器的性能。

15  Hibernate的緩存機制
1.一級緩存又叫內部緩存存在Hibernate,屬于應用事務級緩存

2.二級緩存

a) 應用及緩存

b) 分布式緩存

條件:數(shù)據(jù)不會被第三方修改、數(shù)據(jù)大小在可接受范圍、數(shù)據(jù)更新頻率低、同一數(shù)據(jù)被系統(tǒng)頻繁使用、非關鍵數(shù)據(jù)。

c) 第三方緩存的實現(xiàn)

16  優(yōu)化Hibernate
1.使用雙向一對多關聯(lián),不使用單向一對多

2.靈活使用單向一對多關聯(lián)

3.不用一對一,用多對一取代

4.配置對象緩存,不使用集合緩存

5.一對多集合使用Bag,多對多集合使用Set

6.繼承類使用顯式多態(tài)

7.表字段要少,表關聯(lián)不要怕多,有二級緩存撐腰

以上內容是針對java面試比較常見的Hibernate總結,希望能夠幫助到大家。

相關文章

  • mybatis-plus中更新null值的問題解決

    mybatis-plus中更新null值的問題解決

    本文主要介紹 mybatis-plus 中常使用的 update 相關方法的區(qū)別,以及更新 null 的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-04-04
  • Maven+Tomcat8 實現(xiàn)自動化部署的方法

    Maven+Tomcat8 實現(xiàn)自動化部署的方法

    本篇文章主要介紹了Maven+Tomcat8 實現(xiàn)自動化部署的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • SpringBoot中配置多數(shù)據(jù)源的方法詳解

    SpringBoot中配置多數(shù)據(jù)源的方法詳解

    這篇文章主要為大家詳細介紹了SpringBoot中配置多數(shù)據(jù)源的方法的相關知識,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-02-02
  • spring boot 使用profile來分區(qū)配置的操作

    spring boot 使用profile來分區(qū)配置的操作

    這篇文章主要介紹了spring boot使用profile來分區(qū)配置的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • 完美解決Logback configuration error detected的問題

    完美解決Logback configuration error detected的問題

    這篇文章主要介紹了完美解決Logback configuration error detected的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • SpringBoot的HTTPS配置實現(xiàn)

    SpringBoot的HTTPS配置實現(xiàn)

    本文主要介紹了SpringBoot的HTTPS配置實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-04-04
  • SpringBoot Test 多線程報錯的根本原因(dataSource already closed)

    SpringBoot Test 多線程報錯的根本原因(dataSource already

    在使用Springboot test進行相關測試的時候,發(fā)現(xiàn)開啟線程操作數(shù)據(jù)庫的時候異常,這篇文章主要介紹了SpringBoot Test 多線程報錯:dataSource already closed的根本原因及解決方法,需要的朋友可以參考下
    2022-06-06
  • java多線程復制文件的實例代碼

    java多線程復制文件的實例代碼

    java多線程復制文件的實例代碼,需要的朋友可以參考一下
    2013-03-03
  • logback輸出日志屏蔽quartz的debug等級日志方式

    logback輸出日志屏蔽quartz的debug等級日志方式

    這篇文章主要介紹了logback輸出日志屏蔽quartz的debug等級日志方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • 在Spring使用iBatis及配置講解

    在Spring使用iBatis及配置講解

    今天小編就為大家分享一篇關于在Spring使用iBatis及配置講解,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01

最新評論

和田市| 新干县| 甘南县| 循化| 长治市| 双峰县| 抚顺市| 连云港市| 通城县| 浦县| 资阳市| 扶绥县| 犍为县| 红原县| 惠安县| 苏尼特左旗| 皮山县| 九龙坡区| 大英县| 江阴市| 鞍山市| 梁河县| 监利县| 衡水市| 北流市| 大庆市| 华池县| 桐梓县| 抚松县| 上思县| 湘西| 清丰县| 加查县| 乌拉特后旗| 凭祥市| 通辽市| 浠水县| 金堂县| 久治县| 漠河县| 海丰县|