java中Hibernate面試知識(shí)點(diǎn)整理
作為常用的框架之一,Hibernate在面試的時(shí)候難免會(huì)被問到。好在涉及的都是一些理論方面的知識(shí)點(diǎn),比如概念、原理、使用之類的。我們?cè)诿嬖囍翱梢葬槍?duì)這方面的題目,做一個(gè)充足的準(zhǔn)備,即使有些人對(duì)hibernate框架的了解并不深入。下面我們就hibernate框架中常見的面試題帶來(lái)介紹。
1. 為什么要使用 hibernate?(1).對(duì)JDBC做了輕量級(jí)的封裝,簡(jiǎn)化了數(shù)據(jù)訪問層編碼。
(2).Hibernate是一個(gè)ORM框架,開發(fā)者可以使用面向?qū)ο蟮乃枷氩僮鲾?shù)據(jù)庫(kù),使用更加方便。
(3) hibernate映射很靈活,支持各種關(guān)系數(shù)據(jù)庫(kù),從一對(duì)一到多對(duì)多的各種復(fù)雜關(guān)系。
2.比較hibernate的三種檢索策略優(yōu)缺點(diǎn)(1)立即檢索;
優(yōu)點(diǎn): 對(duì)應(yīng)用程序完全透明,不管對(duì)象處于持久化狀態(tài),還是游離狀態(tài),應(yīng)用程序都可以方便的從一個(gè)對(duì)象導(dǎo)航到與它關(guān)聯(lián)的對(duì)象;
缺點(diǎn):1.select語(yǔ)句太多;2.可能會(huì)加載應(yīng)用程序不需要訪問的對(duì)象白白浪費(fèi)許多內(nèi)存空間;
(2)延遲檢索:
優(yōu)點(diǎn): 由應(yīng)用程序決定需要加載哪些對(duì)象,可以避免可執(zhí)行多余的select語(yǔ)句,以及避免加載應(yīng)用程序不需要訪問的對(duì)象。因此能提高檢索性能,并且能節(jié)省內(nèi)存空間;
缺點(diǎn): 應(yīng)用程序如果希望訪問游離狀態(tài)代理類實(shí)例,必須保證他在持久化狀態(tài)時(shí)已經(jīng)被初始化;
(3)迫切左外連接檢索
優(yōu)點(diǎn):對(duì)應(yīng)用程序完全透明,不管對(duì)象處于持久化狀態(tài),還是游離狀態(tài),應(yīng)用程序都可以方便地沖一個(gè)對(duì)象導(dǎo)航到與它關(guān)聯(lián)的對(duì)象。使用了外連接,select語(yǔ)句數(shù)目少;
缺點(diǎn):可能會(huì)加載應(yīng)用程序不需要訪問的對(duì)象,白白浪費(fèi)許多內(nèi)存空間;復(fù)雜的數(shù)據(jù)庫(kù)表連接也會(huì)影響檢索性能;
3.什么是 ORM 框架?(Object Relation Mapping)對(duì)象關(guān)系映射,即通過類與數(shù)據(jù)庫(kù)表的映射關(guān)系,將對(duì)象持久化到數(shù)據(jù)庫(kù)中。
4.hibernate對(duì)象的三種狀態(tài)Hibernate中對(duì)象有三種狀態(tài): 臨時(shí)狀態(tài)(Transient)、持久狀態(tài)(Persistent)、游離狀態(tài)(Detached)
臨時(shí)狀態(tài):剛剛使用new語(yǔ)句創(chuàng)建,還沒有被持久化,不處于Session的緩存中。處于臨時(shí)狀態(tài)的狀態(tài)的Java對(duì)象被稱為臨時(shí)對(duì)象。
持久化狀態(tài):已經(jīng)被持久化,加入到Session的緩存中。處于持久化狀態(tài)的Java對(duì)象被稱為持久化對(duì)象。
游離狀態(tài):已經(jīng)被持久化,但不處于session的緩存中。處于游離狀態(tài)的Java對(duì)象被稱為游離對(duì)象。
5.Hibernate是如何延遲加載?當(dāng)Hibernate在查詢數(shù)據(jù)的時(shí)候,數(shù)據(jù)并沒有存在與內(nèi)存中,當(dāng)程序真正對(duì)數(shù)據(jù)的操作時(shí),對(duì)象才存在與內(nèi)存中,就實(shí)現(xiàn)了延遲加載,他節(jié)省了服務(wù)器的內(nèi)存開銷,從而提高了服務(wù)器的性能。
面試題擴(kuò)展:
1.一般情況下,關(guān)系數(shù)據(jù)模型與對(duì)象模型之間有哪些匹配關(guān)系(多選)
A)表對(duì)應(yīng)類
B)記錄對(duì)應(yīng)對(duì)象
C)表的字段對(duì)應(yīng)類的屬性
D)表之間的參考關(guān)系對(duì)應(yīng)類之間的依賴關(guān)系
2.以下關(guān)于SessionFactory的說(shuō)法哪些正確?(多選)
A)對(duì)于每個(gè)數(shù)據(jù)庫(kù)事務(wù),應(yīng)該創(chuàng)建一個(gè)SessionFactory對(duì)象
B)一個(gè)SessionFactory對(duì)象對(duì)應(yīng)一個(gè)數(shù)據(jù)庫(kù)存儲(chǔ)源。
C)SessionFactory是重量級(jí)的對(duì)象,不應(yīng)該隨意創(chuàng)建。如果系統(tǒng)中只有一個(gè)數(shù)據(jù)庫(kù)存儲(chǔ)源,只需要?jiǎng)?chuàng)建一個(gè)。
D)SessionFactory的load()方法用于加載持久化對(duì)象
3.元素有一個(gè)cascade屬性,如果希望Hibernate級(jí)聯(lián)保存集合中的對(duì)象,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()
到此這篇關(guān)于java中Hibernate面試知識(shí)點(diǎn)整理的文章就介紹到這了,更多相關(guān)java之Hibernate面試要點(diǎn)內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. Python網(wǎng)絡(luò)編程之ZeroMQ知識(shí)總結(jié)2. chat.asp聊天程序的編寫方法3. Python查找算法之分塊查找算法的實(shí)現(xiàn)4. .NET 中配置從xml轉(zhuǎn)向json方法示例詳解5. python實(shí)現(xiàn)讀取類別頻數(shù)數(shù)據(jù)畫水平條形圖案例6. python之cur.fetchall與cur.fetchone提取數(shù)據(jù)并統(tǒng)計(jì)處理操作7. Python TestSuite生成測(cè)試報(bào)告過程解析8. 解決AJAX返回狀態(tài)200沒有調(diào)用success的問題9. JSP之表單提交get和post的區(qū)別詳解及實(shí)例10. 低版本IE正常運(yùn)行HTML5+CSS3網(wǎng)站的3種解決方案
