




下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
如何解決hibernate自動(dòng)更新實(shí)體類的問(wèn)題
如何解決hibernate自動(dòng)更新實(shí)體類的問(wèn)題
示例:
Java代碼僉
1.GrabOrdergrabOrder=(GrabOrder)this.grabOrderDao.getCurrentSess
ion().get(GrabOrder.class,grabOrderid);
2.grabOrder.setNickname(TimeHWUtil.getCurrentDateTime());
上述代碼會(huì)執(zhí)行兩條SQL:
查詢和更新
為什么會(huì)更新呢?我明明沒(méi)有調(diào)用DAO的update方法?。。?!
但是這里我調(diào)用了實(shí)體類的setter方法,
hibernate有一個(gè)機(jī)制Hibernatedirty-checks,會(huì)同步session緩存和數(shù)據(jù)庫(kù)的數(shù)
據(jù)
如何解決自動(dòng)更新的問(wèn)題:
方案一:把實(shí)體類由持久態(tài)變?yōu)槊摴軕B(tài)(游離態(tài))
Java代碼僉
1.this.grabOrderDao.getCurrentSession().evict(grabOrder);
缺點(diǎn)懶加載的對(duì)象無(wú)法加載,因?yàn)榇藭r(shí)session相當(dāng)千close了
而且會(huì)報(bào)錯(cuò)org.hibernate.LazylnitializationException:couldnotinitializeproxy-no
Session
報(bào)錯(cuò)的代碼:
Java代碼僉
1.this.grabOrderDao.getCurrentSession().clear();
2.System.out.println(grabOrder.getHouseinfo().getHouseOwner
().getid());
更好的操作步驟.
(1)先把要訪問(wèn)的屬性加載出來(lái),可以通過(guò)提前使用,或者Hibernate.initialize(dept)
(2)再調(diào)用evict方法或clear方法
什么叫提前仗用呢?即提前調(diào)用getter方法
正確
Java代碼僉
1.System.out.println(grabOrder.getHouselnfo().getHouseOwner().getld
());
2.this.grabOrderDao.getCurrentSession().clear();
3.System.out.println(grabOrder.getHouseinfo().getHouseOwner
().getid());
方案二:把實(shí)體類變?yōu)橹蛔x
Java代碼僉
1.this.grabOrderDao.setReadOnly(grabOrder,readonly);
但是這招不是萬(wàn)靈藥,有例外:
Unidirectionalone-to-manyandmany-to-many
Hibernatetreatsunidirectionalone-to-manyandmany-to-many
associationsownedbyaread-onlyentitythesameaswhen
ownedbyanentitythatisnotread-only.
修改單向的對(duì)多和多對(duì)多的成員變盤時(shí),依然會(huì)觸發(fā)hibernate的自動(dòng)更新.
有什么萬(wàn)全之策呢?
(a)采用讀寫分離把操作放在只讀的數(shù)據(jù)庫(kù)連接中
(b)采用只讀事務(wù)
當(dāng)方法名是updateTestLa芍時(shí)會(huì)自動(dòng)更新
但是我修改方法名為9etTestL釭y時(shí),就不會(huì)自動(dòng)更新了
為什么呢?看看spring事務(wù)配置
個(gè)`VIII?IIV口3匕·U丿上口y上-:1vu,uuv·,,個(gè)·',`\??II尸ll=^=`.......""\ti....,.....`
*com.hhouse.ujiayigou.service.,*·*(..))11execution(public
*com.house.ujiayigou.timer.pojo.*·*(..))11execution(public
*oa.dao.responsibility.·*·*(..))IIexecu扛on(public
*oa.web.controller.responsibility..*·*(..))11execu扛on(public
*mon.dao.generic..*,*(,,))"/>
<aop:advisorpointcut-ref="bussinessService"advice-ref="txAdvice"/>
</aop:config>I
<aop:aspectj..:'autoproxyproxy-target-class="true"/>
<tx:adviceid="txAdvice"transaction-manager="txManager">
<tx:attributes>
<tx:methodnam+“qet*”lead-only=''true”/>只讀
<tx:methodname="query*"read-only="true"/>
<tx:methodname="build*"read-only="true"/>
<tx:methodname="count*"read-only="true"/>
<tx:methodname="find*"read-only="true"/>
<tx:methodname="test*"read-only="true"/>
<tx:methodname="is*"read-only="true"/>
<tx:methodname="show*"read-only="true"/>
<tx:methodname="convert*"read-only="true"/>
<tx:methodname="delete*"propagation="REQUIRED"/>
<tx:method
::::::比$~:i::::::工f*;$$;:!$芷I1五茹霖甘忱:/>
<tx:methodname="add*"propagation="REQUIRED"/>
-.十V?...^+K^,,...-...^一”^,,;+心”.....^...-“~+;^...一”0cn11T0cn11,....
只讀的對(duì)象不保險(xiǎn),所以我們使用只讀的事務(wù)或只讀的數(shù)據(jù)庫(kù)連接.
如何解決json序列化時(shí),自動(dòng)加載lazy對(duì)象導(dǎo)致對(duì)象多層嵌套的問(wèn)題?
使用Sill\l\pleBea八Pr-ope叨Filter過(guò)濾不需要的字段
Java代碼僉
1./***
2.
3.*@paramxpath:參考www.rodl/kunlunsoft/util/objectxpa
th/ObjectXpath.java
4.*@return
5.*/
6.publicStringtoJson(Stringcolumn,String...xpath){
7.if(this.result==null){//modifiedbyhuangweii@2015-0
8-17
8.System.out.println("this.resultisnull");
9.}else{
10.if(this.result!=false){
11.//this.errorMessage=null;
12.this.setErrorMessage(null);
13.}
14.
15.}
16.if(ValueWidget.isNullOrEmpty(xpath)
17.11ValueWidget.isNullOrEmpty(xpath[0])){
18.returnHWJacksonUtils.getJsonP(this);
19.}
20.
21.//finalObjectXpathoxp=newObjectXpath(www.482223.co
m);
22.intlength=xpath.length;
23.IIfinalObject[]filterObjects=newObject[length];
24.ListfilterObjList=newArraylist();
25.for(inti=0;i<length;i++){
26.Objecto=XPathPcess(this.getValue(),xpath
[i]);
27.if(oinstanceofList){
28.filterObjList.addAll((List)o);
29.}else{
30.filterObjList.add(o);
}
31.
32.//filterObjects[i]=o;
33.}
34.finalObject[]filterObjects=filterObjlist.toArray();
35.returnHWJacksonUtils.getJsonP(this,newDefaultJsonFilte
rDecide(){
36.@Override
37.publicbooleanisFilteColumn(Objectpo
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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á)利園企業(yè)制度考試題及答案
- 后勤安全考試題及答案
- 六上期中考試卷及答案
- 山西中考試卷真題及答案
- 2025-2026學(xué)年度九年級(jí)數(shù)學(xué)上冊(cè)第一次月考天津?qū)S?人教版九上第21 22章參考答案
- 科三科目一考試題及答案
- 全國(guó)2025年一級(jí)消防工程師執(zhí)業(yè)資格考試模擬試卷(含答案)
- 內(nèi)蒙古自治區(qū)2025法檢系統(tǒng)司法輔助人員招聘考試(行政職業(yè)能力測(cè)驗(yàn))仿真試題及答案
- 《計(jì)量經(jīng)濟(jì)學(xué)》虛擬變量練習(xí)題及參考答案
- 翻譯需求動(dòng)機(jī)研究-洞察與解讀
- 初級(jí)招采人員考試(招標(biāo)采購(gòu)專業(yè)實(shí)務(wù))試題庫(kù)及答案(2025年全國(guó))
- 2025成人高考專升本考試政治試題及答案
- 【MOOC】《中國(guó)馬克思主義與當(dāng)代》(北京科技大學(xué))中國(guó)大學(xué)MOOC慕課答案
- 兒科學(xué)-見(jiàn)習(xí)課液體療法
- 高考語(yǔ)文 最是風(fēng)流袁隆平 課件(59張PPT)
- 河道告示牌設(shè)計(jì)樣圖、點(diǎn)、線、面編碼及屬性統(tǒng)計(jì)表、界樁(牌)身份證表、移位樁點(diǎn)之記表樣式、數(shù)據(jù)庫(kù)結(jié)構(gòu)表
- 2019年全國(guó)卷2(物理)含答案
- 房建工程施工工藝標(biāo)準(zhǔn)化手冊(cè)(圖文并茂)
- DB4101-T 25.2-2021物業(yè)服務(wù)規(guī)范 第2部分:住宅-(高清現(xiàn)行)
- 一例給藥錯(cuò)誤不良事件匯報(bào)
- AS9103-關(guān)鍵特性的波動(dòng)管理
評(píng)論
0/150
提交評(píng)論