版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、是目前 web 編程第一語言,歡迎詳情查看 htt韓順平老師力作,1.懶加載是什么? 為什么需要懶加載?2.如何解決懶加載問題為什么需要緩存?看一個(gè)案例:-原理圖從上圖看出: 當(dāng)去查詢對象的時(shí)候,首先到一級(jí)緩存去取數(shù)據(jù),如果有,則不到數(shù)據(jù)庫中取,如果沒有則到數(shù)據(jù)庫中取,同時(shí)在一級(jí)緩存中放入對象.一級(jí)緩存的細(xì)節(jié) 什么操作會(huì)向一級(jí)緩存放入數(shù)據(jù)save,update,saveOrUpda save 案例:/添加一個(gè)學(xué)生oad,get,list,iteraockStudent student=new Student();student.setName();s.save(student);/放入一級(jí)緩存
2、/我馬上查詢Student stu2=(Student) s.get(Student.class, student.getId(); /select System.out.prln(你剛剛加入的學(xué)生名字是+stu2.getName(); 什么操作會(huì)從一級(jí)緩存取數(shù)據(jù).get / load / listget / load 會(huì)首先從一級(jí)緩存中取,如沒有.再有不同的操作get 會(huì)立即向數(shù)據(jù)庫發(fā)請求,而load 會(huì)返回一個(gè)?list 會(huì)不會(huì)從 ses案例:/查詢 45 號(hào)學(xué)生對象,直到用戶真的去使用數(shù)據(jù),才會(huì)向數(shù)據(jù)庫發(fā)請求緩存取數(shù)據(jù)?Student stu=(Student) s.get(Studen
3、t.class, 45);System.out.prln(|);String hql=from Student where id=45;Student stu2=(Student) s.createQuery(hql).uniqueResult();System.out.prln(stu2.getName();從上面的案例,我看出 query.list() query.uniueResut() 不會(huì)從一級(jí)緩取數(shù)據(jù)! 但是 query.list或者 query.uniqueRestu() 會(huì)向一級(jí)緩存放數(shù)據(jù)的. 一級(jí)緩存不需要配置,就可以使用,它本身沒有保護(hù)機(jī)制,所以程序員要考慮這個(gè)問題,可以同
4、 evict 或者 clear 來清除 ses緩存中對象. evict 是清除一個(gè)對象,clear是清除所有的 se緩存對象 ses級(jí)緩存中對象的生命周期, 當(dāng) ses關(guān)閉后,就自動(dòng)銷毀.自己用HashMap 來模擬一個(gè) Ses緩存,加深對緩存的深入.package com.hsp.view;import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class MyCache /使用 map 來模擬緩存sic Map maps=new Has
5、hMap();public sic void main(String args) / TODO Auto-generated method stubgetStudent(1); getStudent(1); getStudent(1); getStudent(1); getStudent(3);getStudent(3);public sic Student getStudent(eger id)/s.get()/先到緩存去 if(maps.containsKey(id)/在緩存有System.out.prln(從緩存取出); return maps.get(id);elseSystem.ou
6、t.prln(從數(shù)據(jù)庫中取);/到數(shù)據(jù)庫取Student stu=MyDB.getStudentFromDB(id);/放入緩存 maps.put(id, stu); return stu;/數(shù)據(jù)庫class MyDBsic List lists=newArrayList();/初始化數(shù)據(jù)庫,假設(shè)有三個(gè)學(xué)生 sicStudent s1=new Student(); s1.setId(1); s1.setName(aaa); Student s2=new Student(); s2.setId(2); s2.setName(bbb); Student s3=new Student(); s3.s
7、etId(3); s3.setName(ccc); lists.add(s1);lists.add(s2);lists.add(s3);public sic Student getStudentFromDB( for(Student s: lists)if(s.getId().equals(id) return s;return null;/ 在數(shù)據(jù)庫中沒有.eger id)class Studentprivateeger id;private String name;publiceger getId() return id;public void setId(eger id) this.id
8、 = id;public String getName() return name;public void setName(String name) = name;為什么需要二級(jí)緩存?因?yàn)橐患?jí)緩存有限(生命周期短),所以題需要二級(jí)緩存(SesFactory 緩存)來彌補(bǔ)這個(gè)問1.2.3.需要配置二級(jí)緩存是交給第二級(jí)緩存的原理去處理,常見的Hashtable , OSCache , EHCache4.二級(jí)緩存的對象可能放在內(nèi)存,也可能放在磁盤.快速入門案例使用 OsCache 來演示二級(jí)緩存的使用.1.配置二級(jí)緩存對配置說明:updatetrue.hibernate.cach
9、e.OSCacheProvidermap/Student.hbm.xml /2. 可以文件放在 src 目錄下,這樣你可以指定放入二級(jí)緩存的對象capacity 大小. 默認(rèn) 10003 使用/ TODO Auto-generated method stub/通過獲取一個(gè) se,讓 hibernate 框架運(yùn)行(config-加載 hibernate.cfg.xml)SesTrans=null;ion tx=null;try /使用基礎(chǔ)模板來講解.s=HibernateUtil.openSes();tx=s.begranion();/查詢 45 號(hào)學(xué)生Student stu1=(Student
10、) s.get(Student.class, 45);/45-一級(jí)緩存System.out.prln(stu1.getName();mit(); catch (Exception e) e.prStackTrace(); if(tx!=null)tx.rollback();finallyif(s!=null & s.isOpen() s.close();System.out.prln(*);try /使用基礎(chǔ)模板來講解.s=HibernateUtil.openSes();tx=s.begranion();/查詢 45 號(hào)學(xué)生Student stu1=(Student) s.get(Studen
11、t.class, 45);System.out.prln(stu1.getName();Student stu3=(Student) s.get(Student.class, 46);System.out.prln(stu3.getName();mit(); catch (Exception e) e.prStackTrace(); if(tx!=null)tx.rollback();finallyif(s!=null & s.isOpen() s.close();/完成一個(gè)統(tǒng)計(jì),統(tǒng)計(jì)的信息在 Sessfactory/SesFactory 對象.Sistics sistics= Hiberna
12、teUtil.getSesFactory().getSistics();System.out.pr System.out.pr System.out.prSystem.out.prln(sistics); ln(放入+sln(命中+sln(錯(cuò)過+sistics.getSecondLevelCachePount();istics.getSecondLevelCacheHitCount();istics.getSecondLevelCacheMissCount();3. 在配置了二級(jí)緩存后,請大家要注意可以通過 Sistics,查看你的配置高不高主鍵增長策略 increment自增,每次增長 1,
13、 適用于所有數(shù)據(jù)庫. 但是不要使用在多進(jìn)程,主鍵類型是數(shù)值型select max(id) from Student identity自增,每次增長 1, 適用于支持 identity 的數(shù)據(jù)(數(shù)值 sequence native會(huì)根據(jù)數(shù)據(jù)類型來選擇,使用 identity,sequence,sql server), 主鍵類型是,hiloselect hibernate_sequence.nextval from dual主鍵類型是數(shù)值 long , short ,id name=id type=java.lang. hiloegerhilo 標(biāo)識(shí)符用法:由 Hibernate 按照一種 hig
14、h/low 算法生成標(biāo)識(shí)符id name=”id” type=”java.lang.eger” column=”ID”my_hi_valuenext_value uuid會(huì)根據(jù) uuid 算法,生成 128-bit 的字串主鍵屬性類型不能是數(shù)值型,而是字串型 assigned用戶自己設(shè)置主鍵值,所以主鍵屬性類型可以是數(shù)值,字串在復(fù)合主鍵foreignone-to-one 的關(guān)系中,有另一張表的主鍵() 來決定 自己主鍵/ 外鍵( IdCard)給出一個(gè)簡單原則:針對 oracle 主鍵是 uuid 或者 assinged/long/short 建議使用sequence 主鍵是 String 使用針對主鍵是/long/short 建議使用 increment/assigend ,如果是字串 UUId/assigned針 對 主 鍵 是/long/shor
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年浙江大學(xué)醫(yī)學(xué)院附屬第一醫(yī)院臺(tái)州醫(yī)院(籌)招聘高層次衛(wèi)技人員68人筆試模擬試題及答案解析
- 吉水縣園區(qū)開發(fā)建設(shè)有限公司及下屬子公司2026年第一批面向社會(huì)公開招聘筆試備考題庫及答案解析
- 2025年河北省定向招錄選調(diào)生備考題庫附答案
- 2025廣東清遠(yuǎn)市清新區(qū)公益性崗位招聘14人備考題庫附答案
- 2025年度河北工程大學(xué)附屬醫(yī)院公開招聘工作人員考試模擬卷附答案
- 2025廣東云浮市新興縣人民法院招聘勞動(dòng)合同制審判輔助人員2人考試參考題庫附答案
- 2025年甘肅省張掖市金源電力工程有限責(zé)任公司供電服務(wù)分公司員工招聘備考題庫附答案
- 2025年河北秦皇島市北戴河醫(yī)院選聘事業(yè)單位工作人員15名備考題庫附答案
- 2025年湖南長沙市雨花區(qū)育新第二小學(xué)秋教師招聘考試模擬卷附答案
- 2026浙江溫州市廣播電視監(jiān)測中心招聘編外合同制人員1人筆試參考題庫及答案解析
- 殯儀館鮮花采購?fù)稑?biāo)方案
- 中小學(xué)生意外傷害防范
- 動(dòng)靜脈瘺課件
- 企業(yè)ESG審計(jì)體系構(gòu)建-洞察及研究
- 2025年信用報(bào)告征信報(bào)告詳版?zhèn)€人版模板樣板(可編輯)
- 急診科心肌梗死搶救流程
- 藥品生產(chǎn)培訓(xùn)課件
- 《先張法預(yù)應(yīng)力混凝土實(shí)心方樁技術(shù)規(guī)程》
- 貴州省縣中新學(xué)校計(jì)劃項(xiàng)目2024-2025學(xué)年高一上學(xué)期期中聯(lián)考地理試題(解析版)
- 【2025年】天翼云解決方案架構(gòu)師認(rèn)證考試筆試卷庫下(多選、判斷題)含答案
- 絞吸船清淤施工方案
評(píng)論
0/150
提交評(píng)論