下載本文檔
版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年哈爾濱銀行七臺(tái)河分行招聘外包員工5人備考題庫(kù)完整答案詳解
- 2025年中國(guó)航空工業(yè)集團(tuán)凱天崗位招聘?jìng)淇碱}庫(kù)及答案詳解參考
- 2025年龍巖市上杭縣人民法院招聘編外人員的備考題庫(kù)及1套完整答案詳解
- 2026年深空探測(cè)數(shù)據(jù)使用合同
- 2025年北京西城區(qū)高二(上)期末歷史試題和答案
- 監(jiān)管協(xié)管員面試題及答案解析(2025版)
- 有色金屬行業(yè)2025Q3總結(jié):Q3盈利同比繼續(xù)上行擁抱資源新周期
- 中國(guó)社會(huì)科學(xué)院世界經(jīng)濟(jì)與政治研究所2026年度公開(kāi)招聘第一批專業(yè)技術(shù)人員6人備考題庫(kù)及答案詳解一套
- 來(lái)賓市公安局2025年第三次招聘輔警備考題庫(kù)及參考答案詳解一套
- 崇左憑祥市應(yīng)急管理局招聘考試真題2024
- 2025中原農(nóng)業(yè)保險(xiǎn)股份有限公司招聘67人筆試考試參考試題及答案解析
- 2025年衛(wèi)生系統(tǒng)招聘(臨床專業(yè)知識(shí))考試題庫(kù)(含答案)
- 基建工程索賠管理人員索賠管理經(jīng)典文獻(xiàn)
- 工業(yè)機(jī)器人專業(yè)大學(xué)生職業(yè)生涯規(guī)劃書
- 農(nóng)貿(mào)市場(chǎng)消防安全管理制度
- 良品鋪?zhàn)訝I(yíng)運(yùn)能力分析及對(duì)策研究
- 2025年戰(zhàn)略投資專員崗位招聘面試參考試題及參考答案
- 2025年小學(xué)教師素養(yǎng)大賽試題(含答案)
- 特種設(shè)備應(yīng)急處置課件
- 2025年科研年度個(gè)人工作總結(jié)(3篇)
- 2025年國(guó)家開(kāi)放大學(xué)《中國(guó)現(xiàn)代文學(xué)專題》形考任務(wù)試題與答案
評(píng)論
0/150
提交評(píng)論