1. 程式人生 > >session清理快取的理解和如何清空快取中的資料

session清理快取的理解和如何清空快取中的資料

尊重版權:http://blog.sina.com.cn/s/blog_62a151be0100nf28.html

Session執行一些sql語句把記憶體中的物件的狀態同步到資料庫,這個過程被稱為session清理.
在預設情況下,Session會在下面的時間點清理快取。


1 當應用程式呼叫net.sf.hibernate.Transacation的commit()方法的時候,commit()方法先清理快取,然後再向資料庫提交事務。


2 當應用程式呼叫Session的find()或者iterate()時,如果快取中持久化物件的屬性發生了變化,就會先清理快取,以保證查詢結果能反映持久化物件的最新狀態。


3 當應用程式顯示呼叫Session的flush()方法的時候。
注意Session的commit()和flush()方法的區別。flush()方法進行清理快取的操作,執行一系列的SQL語句,但不會提交事務;commit()方法會先呼叫flush()方法,然後提交事務。提交事務意味著對資料庫所做的更新被永久儲存下來。

執行session清理的順序:


1.按照應用程式呼叫session.save()方法的銜後順序,執行所有對實進行插入的insert語句。
2.執行所有對實體進行更新的update語句。
3.執行所有對集合進行刪除的delete語句。
4.執行所有對集合元素進行刪除、更新或者插入的SQL語句。
5.執行所有對集合進行插入的insert語句。
6.按照應用程式呼叫session.delete()方法的先後順序,執行所有對實體進行刪除的delete語句。
Session的setFlushMode()方法用於設定清理快取的時間點。FlushMode類定義了三種不同的清理模式:FlushMode.AUTO、FlushMode.COMMIT和FlushMode.NEVER。

 清理快取的模式

 Session的查詢方法

 Session的commit()方法

 Session的flush()方法

 FlushMode.AUTO  清理  清理  清理
 FlushMode.COMMIT  不清理  清理  清理
 FlushMode.NEVER  不清理  不清理  不清理

在批量處理大量資料的時候為了避免記憶體溢位,可手動干預一級快取:

Session.evict 將某個物件從一級快取移除;如:getSession().evict(member);

Session.clear 清理該session的所有快取物件。

相關推薦

Android開發:計算快取大小並且快取

專案中碰到了計算快取大小和清空快取的功能,這個很常見的功能,幾乎每個APP都有,以為實現很簡單,網上搜了一大堆,發現都不是符合我需要的,而且經常刪除的沒有效果,於是又另外找了一些資料,折騰了蠻久,終於完成了 以下的這個類的功能很簡單,計算你的快取總大小,不管內部快取還是外部快取,和清空快取,包括

移動開發----計算快取大小並且快取

以下的這個類的功能很簡單,計算你的快取總大小,不管內部快取還是外部快取,和清空快取,包括內部和外部的快取一起清空,請本人親測,效果槓槓的。 public class DataCleanManager { public static String getTotalC

session清理快取理解如何快取資料

尊重版權:http://blog.sina.com.cn/s/blog_62a151be0100nf28.html Session執行一些sql語句把記憶體中的物件的狀態同步到資料庫,這個過程被稱為session清理. 在預設情況下,Session會在下面的時間點清理

【JAVA學習】session 清理快取理解 如何 快取資料

尊重版權:http://blog.sina.com.cn/s/blog_62a151be0100nf28.html Session執行一些sql語句把記憶體中的物件的狀態同步到資料庫,這個過程被稱為session清理. 在預設情況下,Session會在下面的時間點清理

【Hibernate學習筆記】Session快取清理快取

1. 清空快取     當呼叫session.evict(customer); 或者session.clear(); 或者session.close()方法時,Session的快取被清空。 2. 清理快取     Session具有一個快取,位於快取中的物件處於持久化狀態

C++使用string.getline()cin混合輸入的問題(cin快取

要從控制檯輸入一行字串(可能含空格)的時候,一般常用兩個getline,一個是string裡的,一個是cin裡的 string的getline(cin, str)直接把輸入存到string物件中,更為方便(cin的getline接受的是*char) 若要求先輸入一行(

response.setHeader強制快取強制過期

response.setHeader("Pragma", "No-cache"); response.setHeader("Cache-Control", "no-cache"); respons

memcachedredis快取

memcached: 命令列使用 flush_all 將所有的資料都設定為過期,但記憶體空間不釋放 redis: 命令列使用   (1)  flush all  刪除所有資料庫的所有key (2)  flushdb 刪除當前庫或所選庫的所有key

Android WebView快取

Android原生和H5混合開發,要求使用者退出登入後清空H5所有的快取; 1、清空Cookie CookieSyncManager.createInstance(context.getApplicationContext()); CookieManager

IE/Firefox每次重新整理時自動檢查網頁更新,無需手動快取的設定方法(轉)

1.在firefox的位址列上輸入about:config回車 2.找到browser.cache.check_doc_frequency選項,雙擊將3改成1儲存即可。 那麼這個選項每個值都是什麼含義的。請看下面的解釋: 0: Once per session 每個程序一次 每次啟動Fire

redis如何快取

前言: 如果你們的專案用到redis啦,雖然設定了過期時間,但有時候修改bug,仍然需要及時清空快取,去讀資料庫的資料,所以這篇文章講解如何在linux下清除redis的快取。 正文: 1.首先進到redis的安裝目錄,進到src目錄下,找到redis-cli 2.首先用賬號密

分享知識-快樂自己:Shiro 退出登陸快取實現

shiro是一個被廣泛使用的安全層框架,通過xml配置方式與spring無縫對接,使用者的登陸/退出/許可權控制/Cookie等管理系統基礎功能交給shiro來管理。 一般,在JavaWEB管理平臺系統時,使用者退出系統之前沒需要清除使用者資料和關閉連線,防止垃圾資料堆積,shiro提供了LogoutFil

微信瀏覽器快取(網頁開發)

       微信瀏覽器自帶的瀏覽器快取真心煩,老是有快取,因為開發網頁的需要這裡我在網上找到一個清除快取的方法,親測可用,隨便找一個對話方塊,輸入網址“debugx2.qq.com”,點選訊息中的網址,進入x5除錯頁面,把頁面拉到最底

weblogic快取

清空weblogic的快取(Context path ‘baisic’ is already in user by the modulea之類就一定要清空weblogic的快取,最好也把瀏覽器的快取也清理一下) (1)weblogic8: F:\bea\user

c--getchar() 快取

getchar() 該函式的原型為: # include <stdio.h> int getchar(void); 功能是從緩衝區中讀取一個字元。這個函式非常簡單,連引數都沒有,非常好用。下面用 scanf 給字元變數賦值和吸收回車的程式用 getchar() 修改一下:

shiro退出登陸快取實現

  上一篇介紹了使用springmvc整合shiro登陸過程(http://www.cnblogs.com/nosqlcoco/p/5579081.html),通過FormAuthenticationFilter過濾器獲取到使用者輸入的賬號密碼。   shiro是一個被

ionic專案登出時快取資訊

cordova+ionic專案,測試的時候遇到了這麼個問題,當我登出後再重新登入的時候(不關閉APP),頁面中依然儲存著快取資訊,例如:超連結點選後改變的樣式登出後再登入依然存在,如果只是樣式出錯那還只是小問題,畢竟不影響功能。可惜,這不僅會影響樣式,它還會導致你的導航,ta

C語言之快取

在C語言中,我們常常需要去清空快取區,對於快取區清空的重要性,接下來我們進行具體的說明。 首先我們先解釋一下快取區。 1.快取區 C語言中的緩衝區又稱為快取,它是記憶體空間的一部分。   也就是說,在記憶體空間中預留了一定的儲存空間,這些儲存空間用來

Thinkphp5-Cache::clear()快取在的問題解決

TP5使用檔案快取使用 Cache::clear(); 在Linux系統上面清除所有快取時 存在的問題(window下用這個呼叫沒有問題)在檔案\thinkphp\library\think\cach

sqlserver快取

測試中,釋放快取的一些方法  尤其查詢語句效能測試時,資料是否被快取,這是測試中一個重要點。下面幾個命令幫助我們清除快取。方便測試。  清除快取有關的命令:  SQL 2000裡面除了dbcc unpintable好像就沒有了 而且這個操作也不會立即釋放表記憶體Buffer