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

【JAVA學習】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的所有快取物件。

相關推薦

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

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

Java學習IDEA與SVN關聯過濾設定

【背景】依然是IDEA相關的配置,因為小編參與Java專案的開發,所以需要IDEA與SVN關聯。【內容】一、SVN的過濾設定:    1、svn客戶端設定:直接貼上一下內容到下圖所示輸入框即可:*.svn *.dll*.pdb*.*.target *.classpath *.

java學習spring mvc 公共dao的實現,定義基本的增刪改查

pri 代碼 部分 lec sse encoding del epo repos 接口類:    package com.blog.db.dao; import com.blog.util.Pagination; import java.util.Lis

JAVA學習02.Tomcat配置

參考 pro 放置 目的 classpath JD 路徑 spa tomcat配置 【步驟】 【說明】 1、為什麽配置PATH?   為了方便調用程序,例如你把一個目錄的路徑加到系統默認環境變量PATH裏,那麽你可以直接在運行裏輸入該目錄下的程序名,就可以直接運

JAVA學習java虛擬機內存配置,-Xss256m -Xms512m -Xmx800m -XX:MaxPermSize=512m

程序 導致 可能 tomcat服務 nbsp -xmx tails size log 轉自:https://blog.csdn.net/a503921892/article/details/39048737 配置tomcat服務器內存大小中的Xms、Xmx、PermSize

JAVA學習03.MyEclipse安裝與配置Tomcat

-- tomcat-8 安裝 圖標 -s 服務器 director 找到 tomcat7 【提要】 Eclipse一般用於J2SE,MyEclipse用於J2EE; 【步驟】 1、安裝MyEclipse,網上隨便下載就好; 2、破解MyEclipse,待破解...

JAVA學習07.建立系統模塊的權限表

英文 使用 TP bubuko 分享 http .com java學習 png 【提要】系統權限要盡量做到可配置,包括用戶、菜單、群組、角色、按鈕等 【步驟】 【註意】 1、因為群組名、角色名、按鈕名、菜單名都有可能修改,所以要使用編碼+名稱,編碼

Java學習單例模式

{} on() new 情況下 餓漢模式 syn 效率 存在 情況 單例模式有兩種:餓漢模式和懶漢模式,懶漢模式的特點是延遲加載實例 //餓漢模式class Singleton1{ private static final Singleton1 instance = ne

Java學習網絡編程1

概念 發送 兩臺 物理層 說明 網絡編程 數據鏈路層 應用層 p地址 網絡上兩臺主機的交互 ①根據IP找到對方主機 ②數據發送到對方指定的應用程序上,為了表示這些應用程序,引入了端口的概念。 常用端口: wed端口80 MySQL端口3306 有效端口 0~65535 ③定

Java學習Java簡介與安裝

        Java是一門面向物件程式語言,相對於C語言沒有指標這種讓人難以理解的東西,並且有自己的垃圾回收機制。相對於其他語言,本人感覺Java簡單易學並且功能強大。(當然,python寫起程式碼來更加簡單,不過

java學習java知識點總結

1,java歷史 1.1 java基於C++ 1.4 編譯型語言、解釋型語言、指令碼語言 任何語言都必須翻譯成機器語言,計算機才能執行高階語言編寫的程式。 翻譯的方式有兩種:一個是編譯,一個是解釋。 1.4.1 編譯型語言 編譯型語言寫的程式在被執行之前,

java學習RTTI與反射機制

類載入器首先檢查這個類的Class物件是否已經載入,如果尚未載入,預設的類載入器會根據類名查詢.class檔案,載入時會驗證是否被破壞或者包含不良程式碼,一旦某個類的Class物件被載入記憶體,它就被用來建立這個類的所有物件 Class.forName("");是取得Class物件的引用的一種方法,是用一個

Java學習Scanner類

1.類名稱:java.util.Scanner 2.作用:定義一個輸入流,指明輸入來源。 3.用法:     3.1 從鍵盤輸入。 Scanner input=new Scanner(System.in); int a=input.nextInt();

Java學習String類的常用操作

一、概述。      Java的常用字串型別為String,是一種引用型別(注意C++中的string為基本資料型別),準確來說為 java.lang.String。在String類中,存在許多已經寫好的處理字串的操作介面,所以,Java中對字串的操作十分簡單,一般

Java學習JFileChooser(檔案選擇器)的使用

一、概述。 javax.swing.JFileChooser()(檔案選擇器)提供了一種檔案選擇機制,一般用於開啟檔案,儲存檔案。 二、常用方法。 構造器: 1. public JFileChooser() : 構造一個JFileChooser物件,預設開啟的資料

Java學習使用JColorChooser(顏色選擇器)

一、概述。 java.swing.JColorChooser(顏色選擇器)用於顏色的選擇、編輯等操作。 二、常用方法。 1.public JColorChooser() : 構造器,建立一個預設初始顏色為白色的顏色選擇器。 2.public JColorChooser( Color

Java學習運算子提要

一、算術運算子 求餘運算(%)的運算數可以是浮點數,結果也不一定是整數。 二、賦值運算子 賦值語句也有運算結果,其值為賦值運算子右邊的值。 doubel a; System.out.println(a = 3.5); //輸出 3.5   三

Java學習基本資料型別及其轉換

 一、8種基本資料型別 型別 資料型別    所佔位元組數 預設值 最小值 最大值 整型 byte 1 byte 0 -

Java學習for、while、do...while迴圈語句的學習,斐波那契數列例項。

for迴圈: 先判斷再迴圈,適用於迴圈次數已知。 for迴圈語法:for(表示式1;表示式2;表示式3){ 語句; //迴圈體 } 表示式1、3:任意表達式語句或空語句 表示式2:必須為布林型常量、變數或表示式 執行過程: 例項:求1+2+3+…+100的

Java-3面向物件程式設計理解

面向物件程式設計核心在於“封裝”,即將同一類事物抽象為類class,類似於關係資料庫中實體型,這個類中元素就如屬性一般去描述這個類,“屬性”不僅包括變數,還包括這個類可能使用的函式,也叫方法,由變數和函式即可構成一個類。同時這個“類”的概念也可以類比於C語言中結構體型別,只不過相比於結構體,“類”中