黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java學習 Java面試題——hibernate面試題及答案

Java面試題——hibernate面試題及答案

更新時間:2019-08-05 17:42:56 來源:動力節(jié)點 瀏覽3683次

  


1、cascade關系有以下幾種

 

       (1)all: 所有情況下均進行關聯(lián)操作,即save-update和delete


  (2)0none: 所有情況下均不進行關聯(lián)操作。這是默認值


  (3)save-update: 在執(zhí)行save/update/saveOrUpdate時進行關聯(lián)操作


  (4)0delete: 在執(zhí)行delete 時進行關聯(lián)操作


  (5)all-delete-orphan: 當一個節(jié)點在對象圖中成為孤兒節(jié)點時,刪除該節(jié)點



2、Hibernate中get和load有什么不同之處


     (1)Hibernate的get方法,會確認一下該id對應的數(shù)據是否存在,首先在session緩存中查找然后在二級緩存中查找,還沒有就查詢數(shù)據庫,數(shù)據庫中沒有就返回null


     (2)Hibernate的load方法加載實體對象的時候,根據映射文件上類級別的lazy屬性的配置(默認為true):


   1)若為true,則首先在Session緩存中查找,看看該id對應的對象是否存在,不存在則使用延遲加載


   返回實體的代理類對象(該代理類為實體類的子類,由CGLIB動態(tài)生成)。等到具體使用該對象(除獲取OID以外)的時候


   再查詢二級緩存和數(shù)據庫,若仍沒發(fā)現(xiàn)符合條件的記錄,則會拋出一個ObjectNotFoundException


   2)若為false,就跟Hibernate的get方法查找順序一樣,只是最終若沒發(fā)現(xiàn)符合條件的記錄


   則會拋出一個ObjectNotFoundException,所說的load方法拋異常是指在使用該對象的數(shù)據時


   數(shù)據庫中不存在該數(shù)據時拋異常,而不是在創(chuàng)建這個對象時



3、Hibernate 的緩存體系


  (1)一級緩存: Session 有一個內置的緩存,其中存放了被當前工作單元加載的對象,每個Session 都有自己獨立的緩存,且只能被當前工作單元訪問


  (2)二級緩存: SessionFactory的外置的可插拔的緩存插件。其中的數(shù)據可被多個Session共享訪問SessionFactory的內置緩存:存放了映射元數(shù)據,預定義的Sql語句



4、Hibernate 中Java對象的狀態(tài)


  (1)臨時狀態(tài)(transient)特征:不處于Session 緩存中,數(shù)據庫中沒有對象記錄,


Java如何進入臨時狀態(tài)


通過new語句剛創(chuàng)建一個對象時


當調用Session 的delete()方法


從Session 緩存中刪除一個對象時


(2)持久化狀態(tài)(persisted)特征:處于Session 緩存中,持久化對象數(shù)據庫中設有對象記錄,Session 在特定時刻會保持二者同步


  Java如何進入持久化狀態(tài)


  Session 的save()把臨時-》持久化狀態(tài)


  Session 的load(),get()方法返回的對象


  Session 的find()返回的list集合中存放的對象


  Session 的update(),saveOrupdate()使游離-》持久化


  (3)游離狀態(tài)(detached)特征:不再位于Session 緩存中,游離對象由持久化狀態(tài)轉變而來,數(shù)據庫中可能還有對應記錄


  Java如何進入持久化狀態(tài)-》游離狀態(tài)


  Session 的close()方法


  Session 的evict()方法,從緩存中刪除一個對象



5、數(shù)據庫事務并發(fā)可能帶來的問題


(1)第一類丟失更新(lost update): 在完全未隔離事務的情況下,兩個事物更新同一條數(shù)據資源某一事物異常終止,回滾造成第一個完成的更新也同時丟失。


(2)臟讀(dirty read):如果第二個事務查詢到第一個事務還未提交的更新數(shù)據,形成臟讀


(3)不可重復讀(unrepeated read):一個事務兩次讀取同一行數(shù)據,結果得到不同狀態(tài)結果如中間正好另一個事務更新了該數(shù)據,兩次結果相異,不可信任


(4) 第二類丟失更新(second lost updates):是不可重復讀的特殊情況,如果兩個事務都讀取同一行,然后兩個都進行寫操作,并提交,第一個事務所做的改變就會丟失



6、Hibernate中save、update和saveOrUpdate方法的不同之處


  (1)save:執(zhí)行保存操作的,對一個新new出來的對象進行保存,數(shù)據庫中沒有這個對象,如果數(shù)據庫中有,會報錯說有重復的記錄


     (2)update:如果是對一個已經存在的托管對象進行更新,要使用update方法了,數(shù)據中有這個對象


     (3)saveOrUpdate:這個方法是更新或者插入,有主鍵就執(zhí)行更新,如果沒有主鍵就執(zhí)行插入。是根據實體類對象的狀態(tài)做的不同操作


  1)實體類對象為臨時態(tài)時做的添加save操作


  實體類對象為游離態(tài)、持久態(tài)時做的修改update操作



7、Hibernate中save、update和saveOrUpdate方法的不同之處


  (1)save:執(zhí)行保存操作的,對一個新new出來的對象進行保存,數(shù)據庫中沒有這個對象,如果數(shù)據庫中有,會報錯說有重復的記錄


  (2)0update:如果是對一個已經存在的托管對象進行更新,要使用update方法了,數(shù)據中有這個對象


  (3)0saveOrUpdate:這個方法是更新或者插入,有主鍵就執(zhí)行更新,如果沒有主鍵就執(zhí)行插入。是根據實體類對象的狀態(tài)做的不同操作


  1)實體類對象為臨時態(tài)時做的添加save操作


  2)實體類對象為游離態(tài)、持久態(tài)時做的修改update操作



8、hibernate六大接口


(1)Configuration接口:負責配置并啟動Hibernate


(2)SessionFactory接口:負責初始化Hibernate


(3)Session接口:負責持久化對象的CRUD操作


(4)Transaction接口:負責事務


(5)Query接口和Criteria接口:負責執(zhí)行各種數(shù)據庫查詢



9、Hibernate悲觀鎖解決事務并發(fā)問題


  一個典型的依賴數(shù)據庫的悲觀鎖調用:select * from account where name="Erica" for update這條sql語句鎖定了account表中所有符合檢索條件name=Erica的記錄



10、為了解決數(shù)據庫事務并發(fā)運行時的各種問題數(shù)據庫系統(tǒng)提供四種事務隔離級


  (1)Serializable 串行化


  (2)Repeatable Read 可重復讀


  (3)Read Commited 可讀已提交


  (4)Read Uncommited 可讀未提交



11、hibernate處理過程


  (1)通過Configuration config = new Configuration().configure();//讀取并解析hibernate.cfg.xml配置文件

  

(2)由hibernate.cfg.xml中的讀取并解析映射信息


(3)通過SessionFactory sf = config.buildSessionFactory();//創(chuàng)建SessionFactory


(4)Session session = sf.openSession();//打開Sesssion


(5)Transaction tx = session.beginTransaction();//創(chuàng)建并啟動事務Transation


(6)persistent operate操作數(shù)據,持久化操作


(7)tx.commit();//提交事務


(8)session.close();關閉Session


(9)sf.close()關閉SesstionFactory



12、事務的特性


  (1)原子性(atomic),事務必須是原子工作單元;對于其數(shù)據修改,要么全都執(zhí)行,要么全都不執(zhí)行


  (2)一致性(consistent),事務在完成時,必須使所有的數(shù)據都保持一致狀態(tài)


  (3)隔離性(insulation),由并發(fā)事務所作的修改必須與任何其它并發(fā)事務所作的修改隔離


  (4)持久性(Duration),事務完成之后,它對于系統(tǒng)的影響是永久性的



13、什么是懶加載


  (1)Lazy:延遲加載,在真正使用某個對象的時候才正真的去創(chuàng)建,即hibernate才會正真的發(fā)出sql語句去加載該對象


  (2)Lazy的有效期:只有在session打開的時候才有效;session關閉后lazy就沒效了


   lazy策略可以用在:


  1)標簽上:可以取值true/false


  2)標簽上,可以取值true/false,這個特性需要類增強



14、Hibernate 中inverse的屬性


  hibernate配置文件中有這么一個屬性inverse,它是用來指定關聯(lián)的控制方的inverse屬性默認是false,若為false,則關聯(lián)由自己控制,若為true,則關聯(lián)



  15、Hibernate為樂觀鎖提供了3中實現(xiàn)


  (1)基于version


  (2)基于timestamp


  (3)為遺留項目添加添加樂觀鎖


提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 精品国产免费人成高清 | 在线黄站 | 老司机午夜视频在线观看 | 免费国产高清精品一区在线 | 国产免费爽爽视频免费可以看 | 日日噜噜噜夜夜爽爽狠狠 | 欧美日韩大片在线观看 | 亚州va | 2019亚洲日韩新视频 | 激情综合色五月丁香六月亚洲 | 边做边叫床的大尺度视频免费 | 欧美三级日韩三级 | 最新欧美一级视频 | 亚洲 欧美 激情 另类 自拍 | 午夜18免费观看 | 10周岁女全身裸无打码免费 | 色图综合网| 日韩视频二区 | 免费亚洲成人 | 波多野结衣一区免费作品 | 免费国产成人α片 | 欧美一级高清片 | 久久久精品午夜免费不卡 | 久久久亚洲欧美综合 | 美国一级大黄香蕉片 | 韩国日本三级在线播放 | 国内精品综合九九久久精品 | 日本欧美高清全视频 | 亚洲人成在线免费观看 | 影音先锋亚洲资源 | 污视频网站免费 | 好男人在线社区影院www | 国产l精品国产亚洲区久久 国产papa | 午夜爽爽爽视频 | 亚洲欧美中日韩中文字幕 | jizz日本zzz日本老师水 | 性欧美.video.free | 夜夜操免费视频 | 一级毛片一级毛片一级毛片 | 一区二区三区在线观看视频 | 制服丝袜中文字幕在线观看 |