下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
如何解決hibernate自動更新實(shí)體類的問題
如何解決hibernate自動更新實(shí)體類的問題
示例:
Java代碼僉
1.GrabOrdergrabOrder=(GrabOrder)this.grabOrderDao.getCurrentSess
ion().get(GrabOrder.class,grabOrderid);
2.grabOrder.setNickname(TimeHWUtil.getCurrentDateTime());
上述代碼會執(zhí)行兩條SQL:
查詢和更新
為什么會更新呢?我明明沒有調(diào)用DAO的update方法?。。?!
但是這里我調(diào)用了實(shí)體類的setter方法,
hibernate有一個機(jī)制Hibernatedirty-checks,會同步session緩存和數(shù)據(jù)庫的數(shù)
據(jù)
如何解決自動更新的問題:
方案一:把實(shí)體類由持久態(tài)變?yōu)槊摴軕B(tài)(游離態(tài))
Java代碼僉
1.this.grabOrderDao.getCurrentSession().evict(grabOrder);
缺點(diǎn)懶加載的對象無法加載,因?yàn)榇藭rsession相當(dāng)千close了
而且會報(bào)錯org.hibernate.LazylnitializationException:couldnotinitializeproxy-no
Session
報(bào)錯的代碼:
Java代碼僉
1.this.grabOrderDao.getCurrentSession().clear();
2.System.out.println(grabOrder.getHouseinfo().getHouseOwner
().getid());
更好的操作步驟.
(1)先把要訪問的屬性加載出來,可以通過提前使用,或者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);
但是這招不是萬靈藥,有例外:
Unidirectionalone-to-manyandmany-to-many
Hibernatetreatsunidirectionalone-to-manyandmany-to-many
associationsownedbyaread-onlyentitythesameaswhen
ownedbyanentitythatisnotread-only.
修改單向的對多和多對多的成員變盤時,依然會觸發(fā)hibernate的自動更新.
有什么萬全之策呢?
(a)采用讀寫分離把操作放在只讀的數(shù)據(jù)庫連接中
(b)采用只讀事務(wù)
當(dāng)方法名是updateTestLa芍時會自動更新
但是我修改方法名為9etTestL釭y時,就不會自動更新了
為什么呢?看看spring事務(wù)配置
個`VIII?IIV口3匕·U丿上口y上-:1vu,uuv·,,個·',`\??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,....
只讀的對象不保險(xiǎn),所以我們使用只讀的事務(wù)或只讀的數(shù)據(jù)庫連接.
如何解決json序列化時,自動加載lazy對象導(dǎo)致對象多層嵌套的問題?
使用Sill\l\pleBea八Pr-ope叨Filter過濾不需要的字段
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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024私房舊房交易資金監(jiān)管合同3篇
- 二零二五年度藥店藥品連鎖加盟店藥品零售連鎖企業(yè)品牌形象及產(chǎn)品銷售權(quán)轉(zhuǎn)讓合同
- 二零二五年度廣告?zhèn)髅狡髽I(yè)員工工資待遇及廣告投放提成合同
- 二零二五年度學(xué)校食堂承包管理合同
- 二零二五年度輪胎維修與智能輪胎管理系統(tǒng)開發(fā)合同
- 二零二五年度環(huán)保監(jiān)測設(shè)備維護(hù)人員勞動合同解除書
- 二零二五年度體育賽事合同評審意見用語解析
- 2025年度新能源產(chǎn)業(yè)貸款居間合同
- 二零二五年度文化旅游項(xiàng)目用工勞務(wù)合同
- 2025年度藝術(shù)展覽合作贊助合同
- 增強(qiáng)現(xiàn)實(shí)技術(shù)在藝術(shù)教育中的應(yīng)用
- TD/T 1060-2021 自然資源分等定級通則(正式版)
- 《創(chuàng)傷失血性休克中國急診專家共識(2023)》解讀
- 倉庫智能化建設(shè)方案
- 海外市場開拓計(jì)劃
- 2024年度國家社會科學(xué)基金項(xiàng)目課題指南
- 供應(yīng)鏈組織架構(gòu)與職能設(shè)置
- 幼兒數(shù)學(xué)益智圖形連線題100題(含完整答案)
- 七上-動點(diǎn)、動角問題12道好題-解析
- 2024年九省聯(lián)考新高考 數(shù)學(xué)試卷(含答案解析)
- 紅色歷史研學(xué)旅行課程設(shè)計(jì)
評論
0/150
提交評論