- 首頁(yè)|
- 網(wǎng)校|
- 焚題庫(kù)|
- APP |
-
微信公眾號(hào)
問(wèn):hibernate六大接口
答:1)Configuration接口:負(fù)責(zé)配置并啟動(dòng)Hibernate
2)SessionFactory接口:負(fù)責(zé)初始化Hibernate
3)Session接口:負(fù)責(zé)持久化對(duì)象的CRUD操作
4)Transaction接口:負(fù)責(zé)事務(wù)
5)Query接口和Criteria接口:負(fù)責(zé)執(zhí)行各種數(shù)據(jù)庫(kù)查詢
問(wèn):hibernate處理過(guò)程
答:1)通過(guò)Configuration config = new Configuration().configure();//讀取并解析hibernate.cfg.xml配置文件
2)由hibernate.cfg.xml中的
3)通過(guò)SessionFactory sf = config.buildSessionFactory();//創(chuàng)建SessionFactory
4)Session session = sf.openSession();//打開(kāi)Sesssion
5)Transaction tx = session.beginTransaction();//創(chuàng)建并啟動(dòng)事務(wù)Transation
6)persistent operate操作數(shù)據(jù),持久化操作
7)tx.commit();//提交事務(wù)
8)session.close();關(guān)閉Session
9)sf.close()關(guān)閉SesstionFactory
問(wèn):事務(wù)的特性
答:1)原子性(atomic),事務(wù)必須是原子工作單元;對(duì)于其數(shù)據(jù)修改,要么全都執(zhí)行,要么全都不執(zhí)行
2)一致性(consistent),事務(wù)在完成時(shí),必須使所有的數(shù)據(jù)都保持一致?tīng)顟B(tài)
3)隔離性(insulation),由并發(fā)事務(wù)所作的修改必須與任何其它并發(fā)事務(wù)所作的修改隔離
4)持久性(Duration),事務(wù)完成之后,它對(duì)于系統(tǒng)的影響是永久性的
問(wèn):數(shù)據(jù)庫(kù)事務(wù)并發(fā)可能帶來(lái)的問(wèn)題
答:1)第一類丟失更新(lost update): 在完全未隔離事務(wù)的情況下,兩個(gè)事物更新同一條數(shù)據(jù)資源某一事物異常終止,回滾造成第一個(gè)完成的更新也同時(shí)丟失。
2)臟讀(dirty read):如果第二個(gè)事務(wù)查詢到第一個(gè)事務(wù)還未提交的更新數(shù)據(jù),形成臟讀
3)不可重復(fù)讀(unrepeated read):一個(gè)事務(wù)兩次讀取同一行數(shù)據(jù),結(jié)果得到不同狀態(tài)結(jié)果如中間正好另一個(gè)事務(wù)更新了該數(shù)據(jù),兩次結(jié)果相異,不可信任
4) 第二類丟失更新(second lost updates):是不可重復(fù)讀的特殊情況,如果兩個(gè)事務(wù)都讀取同一行,然后兩個(gè)都進(jìn)行寫(xiě)操作,并提交,第一個(gè)事務(wù)所做的改變就會(huì)丟失
問(wèn):為了解決數(shù)據(jù)庫(kù)事務(wù)并發(fā)運(yùn)行時(shí)的各種問(wèn)題數(shù)據(jù)庫(kù)系統(tǒng)提供四種事務(wù)隔離級(jí)
答:1)Serializable 串行化
2)Repeatable Read 可重復(fù)讀
3)Read Commited 可讀已提交
4)Read Uncommited 可讀未提交
問(wèn):Hibernate悲觀鎖解決事務(wù)并發(fā)問(wèn)題
答:一個(gè)典型的依賴數(shù)據(jù)庫(kù)的悲觀鎖調(diào)用:select * from account where name="Erica" for update這條sql語(yǔ)句鎖定了account表中所有符合檢索條件name=Erica的記錄
問(wèn):Hibernate為樂(lè)觀鎖提供了3中實(shí)現(xiàn)
答:1)基于version
2)基于timestamp
3)為遺留項(xiàng)目添加添加樂(lè)觀鎖
問(wèn):Hibernate 的緩存體系
答:1)一級(jí)緩存: Session 有一個(gè)內(nèi)置的緩存,其中存放了被當(dāng)前工作單元加載的對(duì)象,每個(gè)Session 都有自己獨(dú)立的緩存,且只能被當(dāng)前工作單元訪問(wèn)
2)二級(jí)緩存: SessionFactory的外置的可插拔的緩存插件。其中的數(shù)據(jù)可被多個(gè)Session共享訪問(wèn)SessionFactory的內(nèi)置緩存:存放了映射元數(shù)據(jù),預(yù)定義的Sql語(yǔ)句
問(wèn):Hibernate 中Java對(duì)象的狀態(tài)
答:1)臨時(shí)狀態(tài)(transient)特征:不處于Session 緩存中,數(shù)據(jù)庫(kù)中沒(méi)有對(duì)象記錄,
填寫(xiě)下面表單即可預(yù)約申請(qǐng)免費(fèi)試聽(tīng)java課程!害怕學(xué)不會(huì)?助教全程陪讀,隨時(shí)解惑!擔(dān)心就業(yè)?一地學(xué)習(xí),可全國(guó)推薦就業(yè)!
Java如何進(jìn)入臨時(shí)狀態(tài)
通過(guò)new語(yǔ)句剛創(chuàng)建一個(gè)對(duì)象時(shí)
當(dāng)調(diào)用Session 的delete()方法
從Session 緩存中刪除一個(gè)對(duì)象時(shí)
2)持久化狀態(tài)(persisted)特征:處于Session 緩存中,持久化對(duì)象數(shù)據(jù)庫(kù)中設(shè)有對(duì)象記錄,Session 在特定時(shí)刻會(huì)保持二者同步
Java如何進(jìn)入持久化狀態(tài)
Session 的save()把臨時(shí)-》持久化狀態(tài)
Session 的load(),get()方法返回的對(duì)象
Session 的find()返回的list集合中存放的對(duì)象
Session 的update(),saveOrupdate()使游離-》持久化
3)游離狀態(tài)(detached)特征:不再位于Session 緩存中,游離對(duì)象由持久化狀態(tài)轉(zhuǎn)變而來(lái),數(shù)據(jù)庫(kù)中可能還有對(duì)應(yīng)記錄
Java如何進(jìn)入持久化狀態(tài)-》游離狀態(tài)
Session 的close()方法
Session 的evict()方法,從緩存中刪除一個(gè)對(duì)象
問(wèn):Hibernate中g(shù)et和load有什么不同之處
答:1)Hibernate的get方法,會(huì)確認(rèn)一下該id對(duì)應(yīng)的數(shù)據(jù)是否存在,首先在session緩存中查找然后在二級(jí)緩存中查找,還沒(méi)有就查詢數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)中沒(méi)有就返回null
2)Hibernate的load方法加載實(shí)體對(duì)象的時(shí)候,根據(jù)映射文件上類級(jí)別的lazy屬性的配置(默認(rèn)為true):
、偃魹閠rue,則首先在Session緩存中查找,看看該id對(duì)應(yīng)的對(duì)象是否存在,不存在則使用延遲加載
返回實(shí)體的代理類對(duì)象(該代理類為實(shí)體類的子類,由CGLIB動(dòng)態(tài)生成)。等到具體使用該對(duì)象(除獲取OID以外)的時(shí)候
再查詢二級(jí)緩存和數(shù)據(jù)庫(kù),若仍沒(méi)發(fā)現(xiàn)符合條件的記錄,則會(huì)拋出一個(gè)ObjectNotFoundException
②若為false,就跟Hibernate的get方法查找順序一樣,只是最終若沒(méi)發(fā)現(xiàn)符合條件的記錄
則會(huì)拋出一個(gè)ObjectNotFoundException,所說(shuō)的load方法拋異常是指在使用該對(duì)象的數(shù)據(jù)時(shí)
數(shù)據(jù)庫(kù)中不存在該數(shù)據(jù)時(shí)拋異常,而不是在創(chuàng)建這個(gè)對(duì)象時(shí)
問(wèn):Hibernate中save、update和saveOrUpdate方法的不同之處
答:1)save:執(zhí)行保存操作的,對(duì)一個(gè)新new出來(lái)的對(duì)象進(jìn)行保存,數(shù)據(jù)庫(kù)中沒(méi)有這個(gè)對(duì)象,如果數(shù)據(jù)庫(kù)中有,會(huì)報(bào)錯(cuò)說(shuō)有重復(fù)的記錄
2)update:如果是對(duì)一個(gè)已經(jīng)存在的托管對(duì)象進(jìn)行更新,要使用update方法了,數(shù)據(jù)中有這個(gè)對(duì)象
3)saveOrUpdate:這個(gè)方法是更新或者插入,有主鍵就執(zhí)行更新,如果沒(méi)有主鍵就執(zhí)行插入。是根據(jù)實(shí)體類對(duì)象的狀態(tài)做的不同操作
、賹(shí)體類對(duì)象為臨時(shí)態(tài)時(shí)做的添加save操作
、趯(shí)體類對(duì)象為游離態(tài)、持久態(tài)時(shí)做的修改update操作
問(wèn):cascade關(guān)系有以下幾種
答:1)all: 所有情況下均進(jìn)行關(guān)聯(lián)操作,即save-update和delete
2)none: 所有情況下均不進(jìn)行關(guān)聯(lián)操作。這是默認(rèn)值
3)save-update: 在執(zhí)行save/update/saveOrUpdate時(shí)進(jìn)行關(guān)聯(lián)操作
4)delete: 在執(zhí)行delete 時(shí)進(jìn)行關(guān)聯(lián)操作
5)all-delete-orphan: 當(dāng)一個(gè)節(jié)點(diǎn)在對(duì)象圖中成為孤兒節(jié)點(diǎn)時(shí),刪除該節(jié)點(diǎn)
問(wèn):什么是懶加載
答: 1)Lazy:延遲加載,在真正使用某個(gè)對(duì)象的時(shí)候才正真的去創(chuàng)建,即hibernate才會(huì)正真的發(fā)出sql語(yǔ)句去加載該對(duì)象
2)Lazy的有效期:只有在session打開(kāi)的時(shí)候才有效;session關(guān)閉后lazy就沒(méi)效了
lazy策略可以用在:
、
、
問(wèn):Hibernate 中inverse的屬性
答:hibernate配置文件中有這么一個(gè)屬性inverse,它是用來(lái)指定關(guān)聯(lián)的控制方的inverse屬性默認(rèn)是false,若為false,則關(guān)聯(lián)由自己控制,若為true,則關(guān)聯(lián)。
上一篇:如何順利通過(guò)面試
下一篇: 沒(méi)有了
初級(jí)會(huì)計(jì)職稱中級(jí)會(huì)計(jì)職稱經(jīng)濟(jì)師注冊(cè)會(huì)計(jì)師證券從業(yè)銀行從業(yè)會(huì)計(jì)實(shí)操統(tǒng)計(jì)師審計(jì)師高級(jí)會(huì)計(jì)師基金從業(yè)資格稅務(wù)師資產(chǎn)評(píng)估師國(guó)際內(nèi)審師ACCA/CAT價(jià)格鑒證師統(tǒng)計(jì)資格從業(yè)
一級(jí)建造師二級(jí)建造師消防工程師造價(jià)工程師土建職稱房地產(chǎn)經(jīng)紀(jì)人公路檢測(cè)工程師建筑八大員注冊(cè)建筑師二級(jí)造價(jià)師監(jiān)理工程師咨詢工程師房地產(chǎn)估價(jià)師 城鄉(xiāng)規(guī)劃師結(jié)構(gòu)工程師巖土工程師安全工程師設(shè)備監(jiān)理師環(huán)境影響評(píng)價(jià)土地登記代理公路造價(jià)師公路監(jiān)理師化工工程師暖通工程師給排水工程師計(jì)量工程師
人力資源考試教師資格考試出版專業(yè)資格健康管理師導(dǎo)游考試社會(huì)工作者司法考試職稱計(jì)算機(jī)營(yíng)養(yǎng)師心理咨詢師育嬰師事業(yè)單位教師招聘公務(wù)員公選考試招警考試選調(diào)生村官
執(zhí)業(yè)藥師執(zhí)業(yè)醫(yī)師衛(wèi)生資格考試衛(wèi)生高級(jí)職稱護(hù)士資格證初級(jí)護(hù)師主管護(hù)師住院醫(yī)師臨床執(zhí)業(yè)醫(yī)師臨床助理醫(yī)師中醫(yī)執(zhí)業(yè)醫(yī)師中醫(yī)助理醫(yī)師中西醫(yī)醫(yī)師中西醫(yī)助理口腔執(zhí)業(yè)醫(yī)師口腔助理醫(yī)師公共衛(wèi)生醫(yī)師公衛(wèi)助理醫(yī)師實(shí)踐技能內(nèi)科主治醫(yī)師外科主治醫(yī)師中醫(yī)內(nèi)科主治兒科主治醫(yī)師婦產(chǎn)科醫(yī)師西藥士/師中藥士/師臨床檢驗(yàn)技師臨床醫(yī)學(xué)理論中醫(yī)理論