自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Hibernate的事務(wù):事務(wù)對(duì)象的方法

開發(fā) 后端
Hibernate的事務(wù)保證原子操作的不可分,也就是操作的同時(shí)成功或同時(shí)失敗。hibernate的事務(wù)隔離級(jí)別和JDBC中大致相同。

Hibernate在發(fā)送Sql把對(duì)象信息同步到數(shù)據(jù)時(shí),不是立即進(jìn)行的而是把這些要發(fā)送的Sql緩存在起來(lái),在必要的時(shí)候發(fā)送。

通過(guò)Session的setFlushMode(FlushMode flushMode)方法,來(lái)控制在什么時(shí)候清空Sql的緩沖區(qū),并把緩存的Sql語(yǔ)句發(fā)送出去。

FlushMode是一個(gè)枚舉,它有3個(gè)枚舉值。

FlushMode.AUTO,在持久化對(duì)象的信息被修改時(shí),那么就要把它同步到數(shù)據(jù)庫(kù)中,更新數(shù)據(jù)庫(kù)中隊(duì)?wèi)?yīng)的記錄,也就是在產(chǎn)生修改時(shí)就會(huì)清空緩沖區(qū)。

FlushMode.COMMIT,只有在事務(wù)提交的時(shí)候才清空緩沖區(qū)。

FlushMode.NEVER,這個(gè)值表示只有在調(diào)用了Session的flush()方法才清空緩沖區(qū)。

Hibernate的事務(wù)保證原子操作的不可分,也就是操作的同時(shí)成功或同時(shí)失敗。

Transaction tran=session.beginTranaction();

tran.commit();

tran.rollback();

以上是Hibernate的事務(wù)對(duì)象的方法,來(lái)實(shí)現(xiàn)對(duì)事務(wù)的支持。

hibernate的事務(wù)隔離級(jí)別

hibernate的事務(wù)隔離級(jí)別和JDBC中大致相同。

設(shè)置時(shí)要在hibernate.cfg.xml配置

< property name="hibernate.connection.isolation">4< /property>

1,讀未提交的數(shù)據(jù)(Read uncommitted isolation)

2,讀已提交的數(shù)據(jù)(Read committed isolation)

4,可重復(fù)讀級(jí)別(Repeatable read isolation)

8,可串行化級(jí)別(Serializable isolation)

hibernate的鎖(悲觀鎖,樂觀鎖)

悲觀鎖是由數(shù)據(jù)庫(kù)本身所實(shí)現(xiàn)的,會(huì)對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行鎖定,也就是鎖行。

LockMode.UPGRADE,修改鎖,在get()方法中加上這個(gè)設(shè)置作為第三個(gè)參數(shù)。

LockMode.NONE 無(wú)鎖機(jī)制

LockMode.READ 讀取鎖

LockMode.WRITE 寫入鎖,不能在程序中直接使用

還可以使用Session.lock() Query.setLockMode() Criteria.setLockMode()方法來(lái)設(shè)置鎖

樂觀鎖,也就是通過(guò)對(duì)記錄加上某些信息來(lái)解決并發(fā)訪問(wèn)的問(wèn)題。

版本檢查

要在其表中多加上一個(gè)字段表示版本信息,會(huì)在讀取時(shí)讀到這個(gè)版本號(hào),并在修改之后更新這個(gè)版本號(hào),在并發(fā)修改的時(shí),只有數(shù)據(jù)庫(kù)中記錄的版本號(hào)比要更新的才進(jìn)行更新操作,如果數(shù)據(jù)庫(kù)記錄版本號(hào)比要更新的高,就會(huì)拋出例外。

寫在Xxxxx.hbm.xml中

< version name="version" column="version" type="integer" />

例:

  1. public class User implements Serializable{  
  2.  
  3.     private int id;  
  4.  
  5.     private String name;  
  6.  
  7.     private String phone;  
  8.  
  9.     private int version;//記錄版本的屬性  
  10.  
  11.     public int getId(){  
  12.  
  13.         return id;  
  14.  
  15.     }  
  16.  
  17.  
  18.  
  19.     public void setId(int id){  
  20.  
  21.         this.id = id;  
  22.  
  23.     }  
  24.  
  25.  
  26.  
  27.     public String getName(){  
  28.  
  29.         return name;  
  30.  
  31.     }  
  32.  
  33.  
  34.  
  35.     public void setName(String name){  
  36.  
  37.         this.name = name;  
  38.  
  39.     }  
  40.  
  41.  
  42.  
  43.     public String getPhone(){  
  44.  
  45.         return phone;  
  46.  
  47.     }  
  48.  
  49.  
  50.  
  51.     public void setPhone(String phone){  
  52.  
  53.         this.phone = phone;  
  54.  
  55.     }  
  56.  
  57.  
  58.  
  59.     public int getVersion(){  
  60.  
  61.         return version;  
  62.  
  63.     }  
  64.  
  65.  
  66.  
  67.     public void setVersion(int version){  
  68.  
  69.         this.version = version;  
  70.  
  71.     }     
  72.  
  73.       
  74.  
  75. }  

User類的User.hbm.xml文件

  1. < hibernate-mapping package="alan.hbn.concur.version" auto-import="false"> 
  2.  
  3.      < class name="User" table="user_version"> 
  4.  
  5.          < id name="id" column="id" type="integer" unsaved-value="0"> 
  6.  
  7.               < generator class="native"/> 
  8.  
  9.          < /id> 
  10.  
  11.          < version name="version" column="version" type="integer" /> 
  12.  
  13.          < !--版本控制,指定了版本屬性的名字,和對(duì)應(yīng)表中的字段和類型--> 
  14.  
  15.          < property name="name" column="name"/> 
  16.  
  17.          < property name="phone" column="phone"/>          
  18.  
  19.     < /class> 
  20.  
  21. < /hibernate-mapping> 

【編輯推薦】

  1. Hibernate緩存簡(jiǎn)介及分類
  2. Hibernate中g(shù)enerator屬性的意義
  3. hibernate Key Generator 主鍵生成方式
  4. Hibernate的主鍵生成機(jī)制
  5. hibernate的Query cache 
     
責(zé)任編輯:book05 來(lái)源: 163博客
相關(guān)推薦

2009-09-23 17:41:05

Hibernate事務(wù)

2009-06-03 10:20:11

Hibernate事務(wù)管理配置

2009-06-03 10:49:48

Hibernate事務(wù)

2009-09-25 11:27:19

Hibernate J

2009-09-25 12:59:53

Hibernate事務(wù)

2009-09-24 14:12:22

Hibernate數(shù)據(jù)

2017-01-19 15:32:36

Java全局事務(wù)本地事務(wù)

2012-02-02 15:57:09

HibernateJava

2009-09-29 09:44:52

Hibernate事務(wù)

2009-09-23 17:48:00

Hibernate事務(wù)

2009-06-26 16:31:50

區(qū)分不同對(duì)象Hibernate

2011-03-25 10:00:23

Spring3.0事務(wù)的配置

2010-11-22 16:40:00

MySQL事務(wù)表

2009-06-12 09:49:25

EJB事務(wù)屬性EJB事物

2009-07-23 13:30:46

JDBC事務(wù)

2020-07-17 08:07:54

Spring數(shù)據(jù)庫(kù)事務(wù)

2022-04-26 21:49:55

Spring事務(wù)數(shù)據(jù)庫(kù)

2024-01-18 11:54:44

Redis事務(wù)命令

2010-09-24 19:08:08

SQL事務(wù)

2023-10-30 07:36:19

Spring事務(wù)傳播機(jī)制
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)