




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
練習(xí)列1234注 1:Hibernate3DROPTABLEIFEXISTSDROPTABLEIFEXISTSt_foo;CREATETABLEt_foo(t_idint(11)NOTNULLt_valuevarchar(50)NOTNULL,PRIMARYKEY(t_id)) DTD" <classname="Foo"<generator packagepackageimportorg.hibernate.Session;importpublicclassHibernateUtilsprivatestaticThreadLocal<Session>tl=newThreadLocal<Session>();privatestaticConfigurationconf;privatestaticSessionFactoryfactory;static{conf=newConfiguration();factory=}**publicstaticSessiongetSession()//factory.getCurrentSession();Sessionsession=tl.get();if(session==null)session=factory.openSession();}return}*publicstaticvoidcloseSession()}}Sessionsession=tl.get();if(session!=null){);}packageimportjava.util.Date;importjava.util.I importjava.util.List;importpackageimportjava.util.Date;importjava.util.I importjava.util.List;importorg.hibernate.Query;importorg.hibernate.Session;importorg.junit.Test;importimport{{Foofoo=newFoo();//1在的foo是暫時(shí)態(tài)Transactiontx=session.beginTransaction();//2在的foo是持久態(tài)}}}session.save(foo);語句執(zhí)行后,Hibernateinsert作又操作。印 mit()操作時(shí),會(huì)自勱調(diào)用session.flash() 所以,執(zhí)行了2次update操作新建被處過方Foofoo2=(Foo)session.get(Foo.class,Foofoo1=(Foo)session.get(Foo.class,Foofoo2=(Foo)session.get(Foo.class,Foofoo1=(Foo)session.get(Foo.class,一旦用戶對(duì)緩存中的數(shù)據(jù)做了修改,session刻將數(shù)據(jù)更新到數(shù)據(jù)庫中。中丌會(huì)把游2:延遲加載機(jī)制用用為如何FooFoofoo=(Foo)session.load(Foo.class,了()Foo$$EnhancerByCGLIB$$b3a0560cFoo$$EnhancerByCGLIB$$b3a0560cextendFoo{publicStringgetValue(){return}}Java迚制.class我們并沒有創(chuàng)建Foo$$EnhancerByCGLIB$$b3a0560c這個(gè)類,完成調(diào)用了實(shí)這由Foofinal 的,package增加 packageimportimport importimportorg.hibernate.Query;importorg.junit.Test;importimport{publicvoid tor()Sessionsession=HibernateUtils.getSession();Queryquery=session.createQuery("fromFoo");//List<Foo>fooList= tor<Foo>fooIt= //selectt_idfromwhile{Foofoo=//select*fromt_foowheret_id=?}}}打印4條查詢語句,表明當(dāng)query.i 先執(zhí)行selectt_idfromt_foo;語句,從數(shù)據(jù)庫中僅僅將id取出;請(qǐng)**@param**@param{Sessionsession=Transactiontx=for(Integerid:projects)Projectproject=newProject();}}packagepackageimportpublicclassProjectDeleteActionextendsBaseActionprivateProjectDaoprojectDao=new//privateInteger[]//OutputpublicStringexecute()throws{return}}}publicInteger[]getProjects()return}publicvoidsetProjects(Integer[]projects)jects=}<!DOCTYPEstruts"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.1//EN" <actionname="list"<result<action<result<actionname="create"<result<resultname="success"type="redirectAction"><actionname="delete"<<resultname="success"type="redirectAction"><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01//EN" <script<body<divcellPadding="0"width="100%"<br<tableclass="tableborder"cellSpacing="0"cellPadding="0"width="100%"border="0"><tr<td<td<b>編號(hào)<td<b>名稱<td<b>開始時(shí)間<td<b>結(jié)束時(shí)間 tor
<td<inputtype="checkbox"<tdclass="altbg2"href="load.action?project.id=${id}"><b><s:propertyvalue="no"/></b></a><td<b><s:propertyvalue="name"/><td<b><s:propertyvalue="startDate"/><td<b><s:propertyvalue="endDate"/> <br""""刪除項(xiàng)目""""**@parampublicProjectfindById(Integer{Sessionsession=Projectproject=(Project)session.get(Project.class,id);return}ject.po.Project;publicclassProjectLoadActionextends{privateProjectDaoprojectDao=new////privateProjectpublicStringexecute()throwsExceptionproject=projectDao.findById(project.getId());return"success";}{return}{ject=}}project.struts.xml增加<actionname="load"><<actionname="load"<result<body<div<tableclass="guide"cellSpacing="0"cellPadding="0"width="100%"<br<formid=""action=""value=""/>width="100%"<tr<td<tdclass="altbg1"<inputtype="text"name="no"<spanstyle="color:red"><tdclass="altbg1"<td<inputtype="text"name="name"<spanstyle="color:red"><tdclass="altbg1"<td<inputtype="text"name="startDate"<spanstyle="color:<tdclass="altbg1"<td<inputtype="text"name="endDate"<spanstyle="color:<br<inputclass="buttontype="buttonvalue="取消"name="settingsubmit"/><inputclass="buttontype="buttonvalue="恢復(fù)"name="settingsubmit"/><inputclass="buttontype="submitvalue"name="settingsubmit"/><tableclass="tableborder"cellSpacing="0"cellPadding="0"width="100%"border="0"><tr<td<td<b>編號(hào)<td<b>名稱<td<b>開始時(shí)間<td<b>結(jié)束時(shí)間 tor
<td<inputtype="checkbox"<tdclass="altbg2"<a <b><s:propertyvalue="no"/><td<b><s:propertyvalue="name"/><<td<b><s:propertyvalue="startDate"/><td<b><s:propertyvalue="endDate"/> <br""""刪除項(xiàng)目""""**@param**@parampublicvoidupdate(Project{Sessionsession=openSession();Transactiontx=session.beginTransaction();}ject.po.Project;publicpublicclassProjectUpdateActionextends{privateProjectDaoprojectDao=new//privateProject//OutputpublicStringexecute()throws{return}{return}{ject=}}<actionname="update"<actionname="update"<resultname="success"type="redirectAction"><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01//EN" <body<divcellPadding="0"width="100%"<br<s:hidden<tableclass="tableborder"cellSpacing="0"cellPadding="0"width="100%"border="0"><tr<td<tdclass="altbg1"<spanstyle="color:red"><tdclass="altbg1"<td<spanstyle="color:red"><tdclass="altbg1"<td<s:textfield<spanstyle="color:<tdclass="altbg1"<td<s:textfield<spanstyle="color:<br<inputclass="buttontype="buttonvalue="取消"name="settingsubmit"/><inputclass="buttontype="buttonvalue="恢復(fù)"name="settingsubmit"/><inputclass="buttontype="submitvalue=name="settingsubmit"/>4請(qǐng)Struts+Hibernate的jarfindById法,將getload()方 如果在ProjectDao中調(diào)用session.close()關(guān)閉了session,如果ProjectDao中丌調(diào)用session.close方法,那么中取這樣就造成一個(gè)必在中調(diào)用閉OeesVew候才在sessionsession(要一直持有類packagepackagepublicclassTestThreadLocalpublicstaticvoidmain(String[]}publicstaticvoid{}}classSome{classSomeFactorypublicstaticSomegetSome()returnnew}}首先注意一點(diǎn),f()方法和main()方法同樣都是在一個(gè)線程中,有相同的線程號(hào)。以當(dāng)先線Id為key,創(chuàng)建了一Some象,在同一個(gè)線程中,利用SomeFactory到的Some對(duì)象是同一個(gè)。packagepackageimportimportpublicclassTestThreadLocalpublicstaticvoidmain(String[]}publicstaticvoid{}}classSome{classSomeFactorypublicstaticSomegetSome()Somesome=map.get(threadId);if(some==some=newmap.put(threadId,}}}}return假設(shè)Some就是Session,如果使用這種機(jī)制獲取Session,當(dāng)同一個(gè)用戶瀏覽器丌論怎么調(diào)用session是同一個(gè)(叧要在相同的線程中)。packagepackagepublicclassTestThreadLocalpublicstaticvoidmain(String[]}publicstaticvoid{}}classSome{classSomeFactory//privatestaticMap<Long,Some>map=newHashMap<Long,privatestaticThreadLocal<Some>tl=newpublicstaticSomegetSome()//longthreadId=//Somesome=map.get(threadId);Somesome=tl.get();if(some==null)some=new//map.put(threadId,}return}}packageimportopenSession調(diào)packageimportimportimportimportpublicclassHibUtilprivatestaticConfigurationprivatestaticSessionFactoryconf=newfactory=}publicstaticSessionreturn}}packagepackageimportorg.hibernate.Session;importpublicclassHibernateUtilsprivatestaticThreadLocal<Session>tl=newThreadLocal<Session>();privatestaticConfigurationconf;privatestaticSessionFactorystaticconf=newConfiguration();factory=}publicstaticSessiongetSession()}}Sessionsession=tl.get();if(session==null)session=factory.openSession();}return}publicstaticvoid{Sessionsession=tl.get();if(session!=null){);}}在器中調(diào)用closeSession()關(guān)閉Session。"-//Hibernate/Hibernate"-//Hibernate/HibernateConfigurationDTD3.0//EN"<propertyname="connection.url"><property<property<<propertyname="connection.driver_class"><property<property <propertypackagepackageimportimportimportpublicclassHibernateUtilsprivatestaticConfigurationprivatestaticSessionFactorystaticconf=newfactory=}**}}publicstaticSessiongetSession()return}*publicstaticvoidcloseSession()Sessionsession=if(session!={}}新建t_empDROPTABLEIFDROPTABLEIFEXISTSt_emp;CREATETABLEt_emp(t_idint(11)NOTNULLt_namevarchar(50)NOTNULL,t_salarydouble(9,2)NOTNULL,t_hire_datedateNOTNULL,t_last_logintimestampNOTNULL,t_registerchar(1)NOTNULL,t_dept_idint(11)NOTNULL,PRIMARYKEY(t_id))DROPDROPTABLEIFEXISTSCREATETABLEt_deptt_idint(11)NOTNULLt_namevarchar(50)NOTNULL,t_locvarchar(200)NOTNULL,PRIMARYKEY(t_id))insertintot_dept(t_name,t_loc)當(dāng)我們寫員工表Emp和部門表DeptEmp 求可以叨做此時(shí)員工Emps不部門DeptDept 以叨做此時(shí)部門DeptEmps再比如當(dāng)我們寫購物車訂單Order和訂單項(xiàng)ItemItem 當(dāng)看一個(gè)條目Item時(shí),我們也要看該條目屬亍哪個(gè)訂單OrderOrderItem packagepackageimportpublicclassEmpprivateIntegerprivateStringname;privatedoublesalary;privateDatehireDate;privateDatelastLogin;privatebooleanregister;privateIntegerdeptId;publicIntegergetDeptId(){returnpublicvoidsetDeptId(IntegerdeptId)this.deptId=publicIntegergetId(){returnpublicvoidsetId(Integerid){this.id=publicStringgetName(){returnpublicvoidsetName(Stringname){=publicdoublegetSalary(){returnpublicvoidsetSalary(doublesalary){this.salary=publicDategetHireDate(){returnpublicvoidsetHireDate(DatehireDate)this.hireDate=publicDategetLastLogin(){returnpublicvoidsetLastLogin(DatelastLogin)this.lastLogin=publicbooleanisRegister(){returnpublicvoidsetRegister(booleanregister)this.register=} DTD" <classname="Emp"<idname="id"type="integer"<generator packagepackagepublicclass{privateIntegerid;privateStringname;privateStringlocation;publicIntegergetId(){returnpublicvoidsetId(Integerid){this.id=publicStringgetName(){returnpublicvoidsetName(Stringname){=publicStringgetLocation(){returnpublicvoidsetLocation(Stringlocation)this.location=}} DTD" <classname="Dept"<idname="id"type="integer"<generator 每一次我們?nèi)〕鲆粋€(gè)員工,同時(shí)查看他的信息時(shí),還需要通過deptId找到指定的Dept再次注意:并丌是有表關(guān)聯(lián)時(shí)many-to-one射,是當(dāng)有如上所示many-to-onepackageimportpublicclass{privateIntegerid;privateStringname;privatedoublesalary;privateDatehireDate;privateDatepackageimportpublicclass{privateIntegerid;privateStringname;privatedoublesalary;privateDatehireDate;privateDatelastLogin;privatebooleanregister;//privateIntegerprivateDeptpublicDeptgetDept(){returnpublicvoidsetDept(Deptdept){this.dept=publicIntegergetId(){returnpublicvoidsetId(Integerid){this.id=publicStringgetName(){returnpublicvoidsetName(Stringname){=publicdoublegetSalary(){returnpublicvoidsetSalary(doublesalary){this.salary=publicDategetHireDate(){returnpublicvoidsetHireDate(DatehireDate)this.hireDate=publicDategetLastLogin(){returnpublicvoidsetLastLogin(DatelastLogin)this.lastLogin=publicbooleanisRegister(){returnpublicvoidsetRegister(booleanregister)this.register=} DTD" <classname="Emp"<idname="id"type="integer"<generator 提方方"-//Hibernate/HibernateConfigurationDTD3.0//EN"<propertyname="connection.url"><property<property<property<property<propertyinsertintot_dept(t_name,t_loc)insertintot_dept(t_name,t_loc)packagepackage{publicvoidtestSaveEmp()Empemp=newEmp();emp.setHireDate(newDate());}}}Transactiontx=session.beginTransaction();Deptdept=newDept();packagepackageimportimportimportimport{publicvoidtestGetEmp()Empemp=(Emp)session.get(Emp.class,1);}}Hibernate:selectdept0_.t_idast1_1_0_,dept0_.t_nameast2_1_0_,dept0_.t_locast3_1_0_fromt_deptdept0_wheredept0_.t_id=?Hibernate:selectHibernate:selectdept0_.t_idast1_1_0_,dept0_.t_nameast2_1_0_,dept0_.t_locast3_1_0_fromt_deptdept0_wheredept0_.t_id=?Hibernate:selectemp0_.t_idast1_0_0_,emp0_.t_nameast2_0_0_,emp0_.t_salaryast3_0_0_,emp0_.t_hire_dateast4_0_0_,emp0_.t_last_loginast5_0_0_,emp0_.t_registerast6_0_0_,emp0_.t_dept_idast7_0_0_fromt_empemp0_,fromt_empejoint_dept請(qǐng)注意打印出來的Emp是本類,而Dept確實(shí)類即使我們使用的是get方法獲取的Emp對(duì)象EmpEmpemp=(Emp)session.get(Emp.class,用到了Dept對(duì)象時(shí),才勱態(tài)加載了Dept的對(duì)象。讓我們把兩條SQL合并為一條lazy="false" "lazy="false"Hibernate:Hibernate:selectemp0_.t_idast1_0_1_,emp0_.t_nameast2_0_1_,emp0_.t_salaryast3_0_1_,emp0_.t_hire_dateast4_0_1_,emp0_.t_last_loginast5_0_1_,emp0_.t_registerast6_0_1_,emp0_.t_dept_idast7_0_1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 移動(dòng)辦公設(shè)備貸款協(xié)議
- 《網(wǎng)絡(luò)廣告互動(dòng)性研究》課件
- 雙語列車長(zhǎng)車票的發(fā)售規(guī)定課件
- 雙語列車長(zhǎng)火災(zāi)爆炸事故的應(yīng)急處理課件
- 中醫(yī)與傳統(tǒng)文化課件
- 家居設(shè)計(jì)合同范本
- 版?zhèn)€人房產(chǎn)轉(zhuǎn)讓合同樣本
- 四位創(chuàng)始股東合作合同書
- 【課件】電荷+課件+-高二上學(xué)期物理人教版(2019)必修第三冊(cè)+
- 景德鎮(zhèn)藝術(shù)職業(yè)大學(xué)《中醫(yī)養(yǎng)生與康復(fù)學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 5.1 根本政治制度 同步練習(xí) -2024-2025學(xué)年統(tǒng)編版道德與法治八年級(jí)下冊(cè)
- 2025下半年廣西桂林市事業(yè)單位招聘應(yīng)征入伍大學(xué)畢業(yè)生153人高頻重點(diǎn)模擬試卷提升(共500題附帶答案詳解)
- 四川涼山歷年中考語文現(xiàn)代文之散文閱讀7篇(截至2024年)
- 教學(xué)課件:《城市地理學(xué)》
- 幼兒園集中教育活動(dòng)培訓(xùn)
- 2025年上半年福建省泉州市事業(yè)單位招聘編制內(nèi)信息(1023人)易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- DB37-T 5307-2024 住宅小區(qū)供水設(shè)施建設(shè)標(biāo)準(zhǔn)
- 公司安全生產(chǎn)管理制度培訓(xùn)
- 2025年八省聯(lián)考新高考數(shù)學(xué)試卷真題答案詳解(精校打?。?/a>
- 燃?xì)夤艿兰霸O(shè)施保護(hù)專項(xiàng)方案
- 食品安全知到智慧樹章節(jié)測(cè)試答案2024年秋浙江大學(xué)
評(píng)論
0/150
提交評(píng)論