1. 程式人生 > >Hibernate中持久化上下文的flush操作概述

Hibernate中持久化上下文的flush操作概述

Hibernate中,持久化上下文(如JPA的EntityManager或Hibernate的Session)是所有Entity物件的記憶體工作空間。持久化上下文作為一個事務級別的“write-behind”快取,負責維護其中管理的各個Entity物件的狀態。任何對Entity物件的狀態的修改,首先應用於持久化上下文的記憶體快取中,然後在flush操作的時候才會同步儲存到對應的資料庫中。

持久化上下文的flush操作,是一個將持久化上下文中管理的各個Entity物件的狀態同步儲存到關聯的底層資料庫的過程。flush操作將對對Entity物件的狀態的修改轉換為關係資料庫的INSERT、UPDATE或DELETE語句,在資料庫中執行。

為此,JPA的EntityManager和Hibernate的Session都提供了一系列的相關方法。但是,flush操作的執行過程卻因flushMode的值不同而有很多區別。

flushMode說明了flush操作的執行策略。JPA的EntityManager支援AUTO和COMMIT;而Hibernate的Session支援AUTO、COMMIT、ALWAYS和MANUAL,說明如下:

  • AUTO,預設值,只有在必要的情況下才對Session執行flush操作
  • COMMIT,在當前事務提交之前,儘量推遲(但是不能避免)對Session執行flush操作
  • ALWAYS,在任何查詢請求之前對Session執行flush操作
  • MANUAL,只有在應用中顯式呼叫Session的flush()方法,才對Session執行flush操作

相關推薦

Hibernate持久化上下文flush操作概述

Hibernate中,持久化上下文(如JPA的EntityManager或Hibernate的Session)是所有Entity物件的記憶體工作空間。持久化上下文作為一個事務級別的“write-behind”快取,負責維護其中管理的各個Entity物件的狀態。任何對Enti

Hibernate持久化上下文flush操作之一COMMIT

在Hibernate中持久化上下文的flush操作模式中,JPA還支援COMMIT(JPA只支援AUTO和COMMIT兩種)。對於COMMIT的flush操作模式,JPA針對HQL查詢和native SQL查詢有不同的執行: 對於HQL查詢,無論是否涉及到了被緩衝的Ent

(十二)Hibernate的多表操作(1):單向多對一

art 保存 int gen round t對象 情況 映射文件 拋出異常 由“多”方可知“一”方的信息,比如多個員工使用同一棟公寓,員工可以知道公寓的信息,而公寓無法知道員工的信息。 案例一: pojo類 public class Department {

(十四)Hibernate的多表操作(4):單向一對一

odin utf-8 lds () clas string 方式 rdb style 案例一: 註解方式實現一對一 UserBean.java package bean; import java.io.Serializable; import javax.pers

Hibernate持久化物件的三種狀態簡述

持久化物件的三種狀態簡述 在Hibernate中持久化類的物件可以劃分為三種狀態,分別是: 瞬態,持久態,脫管態。 一、瞬時狀態(Transient) 瞬時物件特點: (1) 不和 Session 例項關聯 (2) 在資料庫中沒有和瞬時物件關聯的記錄 通過

三、hibernate持久化類的使用

持久化對象 console image 持久 就是 ssi seq sybase 內存 hibernate的持久化類 持久化:將內存中的一個對象持久化到數據庫中的過程,hibernate就是一個用來進行持久化的框架 持久化類:一個Java對象與數據庫中表建立了關系映

hibernatesession增刪改操作及事務提交的問題

一、問題回顧 Session session = MySessionFactory.getSession(); // Transaction tx = null; // try{ // String hql="delete form td_report where ID=1" ; //

Hibernate對單表操作----查詢單個記錄

(1)類名 a=(類)session.get(類名.class,表中的主鍵) ; //從表中的主鍵獲取表中相應列的成員 類名 a=(類)session.load(類名.class,表中的主鍵);

Hibernate持久化上下文的事務API

Hibernate 的持久化上下文提供了一系列的事務API,這些事務API,只是為了分離上層應用與底層資料庫,便於將來可能的資料庫遷移。Hibernate本身沒有提供任何新的事務特性。 使用Hibe

hibernate一對多建表及各種操作

實體類: Student private Integer sid; private String sname; private String sage; private String ssex; private Teacher teacher

hibernate實體類的三種狀態和crud操作

實體類 private int uid; private String name; private String age; private String address; public int getUid() { return uid;

Hibernate一對多配置及操作

表的一對多對映配置 以客戶和聯絡人表為例子:客戶是一,聯絡人是多 1、建立實體類,客戶和聯絡人 2、讓兩個實體類之間互相表示 (1)在客戶實體類中要表示多個聯絡人 - 一個客戶有多個聯絡人 //在客戶實體類裡面表示多個聯絡人,一個客戶有多個聯絡人 //hibern

Hibernate完成持久化操作

前言:上一篇部落格已經介紹瞭如何搭建Hibernate環境已經對映檔案,這次在上一篇的基礎上完成一次對資料庫的操作。 (一) 使用Hibernate操作資料庫主要包含7個步驟 1.讀取並解析配置檔案及對映檔案 Configuration conf=new

hibernate 資料庫連線操作

hibernate.cfg.xml  中配置 <?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate

在 DataList 進行資料編輯與刪除操作概述

  簡介 在資料插入、更新和刪除概述 教程中,我們已經就如何使用應用程式架構、ObjectDataSource 以及 GridView 、DetailsView 和FormView 控制元件進行插入、更新以及刪除資料操作進行了討論。使用 ObjectDataSource 以

Hibernate使用HQL進行查詢操作

注意:HQL語言,是基於物件進行查詢的,不是基於資料庫的表。 1、基本的HQL查詢 1.1 使用HQL查詢的一般步驟 public void test01() { Session session = HibernateUtils.openSession(); Qu

Hibernate多對多配置及操作

在兩張表的多對多操作時,要建立第三張表,至少有兩個欄位作為外來鍵,指向另外兩個表的主鍵。 表的多對多對映配置 以使用者和角色為例子 1、建立實體類,使用者和角色實體類 2、讓兩個實體類互相進行表示 - 一個使用者有多個角色,使用set集合 - 一個角色有多個使用者,也使用se

hibernate如何用Annotion註解設定model的欄位不持久化

public final static int DELETESTATUS_YES=1; public final static int DELETESTATUS_NO=0; @Id @GeneratedValue(

Hibernate整合Spring出現寫操作在只讀事物的問題

1、  問題描述 Spring與Hibernate整合,且在web.xml中配置OpenSessionInViewFilter,目的是解決懶載入問題 <!-- 解決Lazy Initial Exception問題 -->    <filter>   

hibernate一對多表關係操作(7)

1、基本操作,儲存客戶、聯絡人,並設定它們的關聯public void test01(){ Session session = HibernateUtils.OpenSession(); Transaction tx = session.beginTransactio