常見的Hibernate面試題?相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。
在化州等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、外貿(mào)營銷網(wǎng)站建設(shè) 網(wǎng)站設(shè)計制作按需網(wǎng)站策劃,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),成都營銷網(wǎng)站建設(shè),成都外貿(mào)網(wǎng)站建設(shè)公司,化州網(wǎng)站建設(shè)費用合理。作為常用的框架之一,Hibernate在面試的時候難免會被問到。好在涉及的都是一些理論方面的知識點,比如概念、原理、使用之類的。我們在面試之前可以針對這方面的題目,做一個充足的準(zhǔn)備,即使有些人對hibernate框架的了解并不深入。下面我們就hibernate框架中常見的面試題帶來介紹。
(1).對JDBC做了輕量級的封裝,簡化了數(shù)據(jù)訪問層編碼。
(2).Hibernate是一個ORM框架,開發(fā)者可以使用面向?qū)ο蟮乃枷氩僮鲾?shù)據(jù)庫,使用更加方便。
(3) hibernate映射很靈活,支持各種關(guān)系數(shù)據(jù)庫,從一對一到多對多的各種復(fù)雜關(guān)系。
(1)立即檢索;
優(yōu)點: 對應(yīng)用程序完全透明,不管對象處于持久化狀態(tài),還是游離狀態(tài),應(yīng)用程序都可以方便的從一個對象導(dǎo)航到與它關(guān)聯(lián)的對象;
缺點:1.select語句太多;2.可能會加載應(yīng)用程序不需要訪問的對象白白浪費許多內(nèi)存空間;
(2)延遲檢索:
優(yōu)點: 由應(yīng)用程序決定需要加載哪些對象,可以避免可執(zhí)行多余的select語句,以及避免加載應(yīng)用程序不需要訪問的對象。因此能提高檢索性能,并且能節(jié)省內(nèi)存空間;
缺點: 應(yīng)用程序如果希望訪問游離狀態(tài)代理類實例,必須保證他在持久化狀態(tài)時已經(jīng)被初始化;
(3)迫切左外連接檢索
優(yōu)點:對應(yīng)用程序完全透明,不管對象處于持久化狀態(tài),還是游離狀態(tài),應(yīng)用程序都可以方便地沖一個對象導(dǎo)航到與它關(guān)聯(lián)的對象。使用了外連接,select語句數(shù)目少;
缺點:可能會加載應(yīng)用程序不需要訪問的對象,白白浪費許多內(nèi)存空間;復(fù)雜的數(shù)據(jù)庫表連接也會影響檢索性能;
(Object Relation Mapping)對象關(guān)系映射,即通過類與數(shù)據(jù)庫表的映射關(guān)系,將對象持久化到數(shù)據(jù)庫中。
Hibernate中對象有三種狀態(tài): 臨時狀態(tài)(Transient)、持久狀態(tài)(Persistent)、游離狀態(tài)(Detached)
臨時狀態(tài):剛剛使用new語句創(chuàng)建,還沒有被持久化,不處于Session的緩存中。處于臨時狀態(tài)的狀態(tài)的Java對象被稱為臨時對象。
持久化狀態(tài):已經(jīng)被持久化,加入到Session的緩存中。處于持久化狀態(tài)的Java對象被稱為持久化對象。
游離狀態(tài):已經(jīng)被持久化,但不處于session的緩存中。處于游離狀態(tài)的Java對象被稱為游離對象。
當(dāng)Hibernate在查詢數(shù)據(jù)的時候,數(shù)據(jù)并沒有存在與內(nèi)存中,當(dāng)程序真正對數(shù)據(jù)的操作時,對象才存在與內(nèi)存中,就實現(xiàn)了延遲加載,他節(jié)省了服務(wù)器的內(nèi)存開銷,從而提高了服務(wù)器的性能。
面試題擴展:
1.一般情況下,關(guān)系數(shù)據(jù)模型與對象模型之間有哪些匹配關(guān)系(多選)
A)表對應(yīng)類
B)記錄對應(yīng)對象
C)表的字段對應(yīng)類的屬性
D)表之間的參考關(guān)系對應(yīng)類之間的依賴關(guān)系
2.以下關(guān)于SessionFactory的說法哪些正確?(多選)
A)對于每個數(shù)據(jù)庫事務(wù),應(yīng)該創(chuàng)建一個SessionFactory對象
B)一個SessionFactory對象對應(yīng)一個數(shù)據(jù)庫存儲源。
C)SessionFactory是重量級的對象,不應(yīng)該隨意創(chuàng)建。如果系統(tǒng)中只有一個數(shù)據(jù)庫存儲源,只需要創(chuàng)建一個。
D)SessionFactory的load()方法用于加載持久化對象
3.元素有一個cascade屬性,如果希望Hibernate級聯(lián)保存集合中的對象,casecade屬性應(yīng)該取什么值?(單選)
A)none
B)save
C)delete
D)save-update
5.以下哪些屬于Session的方法?
A)load()
B)save()
C)delete()
D)update()
E)open()
F)close()
看完上述內(nèi)容,你們掌握常見的Hibernate面試題的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!