




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
如何解決hibernate自動更新實體類的問題
如何解決hibernate自動更新實體類的問題
示例:
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)用了實體類的setter方法,
hibernate有一個機制Hibernatedirty-checks,會同步session緩存和數(shù)據(jù)庫的數(shù)
據(jù)
如何解決自動更新的問題:
方案一:把實體類由持久態(tài)變?yōu)槊摴軕B(tài)(游離態(tài))
Java代碼僉
1.this.grabOrderDao.getCurrentSession().evict(grabOrder);
缺點懶加載的對象無法加載,因為此時session相當(dāng)千close了
而且會報錯org.hibernate.LazylnitializationException:couldnotinitializeproxy-no
Session
報錯的代碼:
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());
方案二:把實體類變?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,....
只讀的對象不保險,所以我們使用只讀的事務(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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中醫(yī)考試題及答案
- 云南省保山隆陽區(qū)一中2024-2025學(xué)年高二化學(xué)第二學(xué)期期末調(diào)研試題含解析
- 云南省宣威市第十中學(xué)2025年化學(xué)高二下期末統(tǒng)考試題含解析
- 新疆博爾塔拉蒙古自治州第五師高級中學(xué)2025年化學(xué)高二下期末綜合測試模擬試題含解析
- 云南師大附中2024-2025學(xué)年數(shù)學(xué)高二下期末達(dá)標(biāo)檢測試題含解析
- 重慶市永川區(qū)2025屆化學(xué)高二第二學(xué)期期末綜合測試模擬試題含解析
- 餐飲行業(yè)食品安全風(fēng)險評估與防控合同范本
- 醫(yī)療機構(gòu)床單被褥洗滌消毒承包合同
- 農(nóng)村集體代養(yǎng)牛只收益分成合同
- 餐飲行業(yè)投資股權(quán)收購及收益分配合同
- 廬江縣2024-2025學(xué)年四下數(shù)學(xué)期末達(dá)標(biāo)測試試題含解析
- 水泥廠班組生產(chǎn)中的安全
- 湘教版地理中考總復(fù)習(xí)教案
- 東北石油大學(xué)專用畢業(yè)答辯模板2
- 高中英語新課標(biāo)3000詞匯表(新高考)
- 2025年個人房貸還款合同格式
- 2025年福建廈門市翔安市政集團水務(wù)管理有限公司招聘筆試參考題庫附帶答案詳解
- 2021年上海市高考英語試卷(春考)(解析卷)
- 江蘇2024年江蘇海事職業(yè)技術(shù)學(xué)院招聘11人(第三批)筆試歷年參考題庫附帶答案詳解
- 各種奶茶配方資料
- 120與急診交接流程
評論
0/150
提交評論