有關hibernate的緩存機制

今天遇到一個情況,就是在action層把實體對象查詢出來之後,由於在頁面中需要使用該實體對象中的一個值,就需要把該實體對象的某個屬性值改變,就調用了該實體類對象的setter方法,之後並沒有手動跟新該實體類對象,但是數據庫中的數據該實體類對象所對應的那條記錄中的該屬性值會自動發生改變。

這是因爲,當我們從數據庫中把某個實體類對象查詢出來的時候,該對象是在hibernate的緩存中,hibernate自動跟新緩存,也就是說,緩存中查詢出來的所有對象(一個事物中的),hibernate都會判斷緩存中的對象是否被更新,如果被更新,hibernate就會自動去更新數據庫。

解決的辦法

一、

使用另一個對象來承載該數據,

二、

TblArchivesFieldSet fieldSet = new TblArchivesFieldSet();

org.apache.commons.beanutils.BeanUtils.copyProperties(fieldSet, fieldSet2);

......別的暫時沒有嘗試,不過可以試試怎麼把查詢出的數據變成遊離態試試,

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章