偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

深入了解Hibernate自動狀態(tài)檢測

開發(fā) 后端
Hibernate自動狀態(tài)檢測是通過一個方法實現(xiàn)的。Hibernate的用戶曾要求一個既可自動分配新持久化標(biāo)識(identifier)保存瞬時(transient)對象,又可更新/重新關(guān)聯(lián)脫管(detached)實例的通用方法。

Hibernate自動狀態(tài)檢測為用戶帶來了很大的方便,它是通過一個方法來具體實現(xiàn)這個功能的,下面我們主要就該方法深入學(xué)習(xí)。

Hibernate的用戶曾要求一個既可自動分配新持久化標(biāo)識(identifier)保存瞬時(transient)對象,又可更新/重新關(guān)聯(lián)脫管(detached)實例的通用方法。Hibernate自動狀態(tài)檢測是saveOrUpdate()方法實現(xiàn)了這個功能。

  1. // in the first session  
  2. Cat cat = (Cat) firstSession.load(Cat.class, catID);  
  3.  
  4. // in a higher tier of the application  
  5. Cat mate = new Cat();  
  6. cat.setMate(mate);  
  7.  
  8. // later, in a new session  
  9. secondSession.saveOrUpdate(cat);   // update existing state (cat has a non-null id)  
  10. secondSession.saveOrUpdate(mate);  // save the new instance (mate has a null id) 

saveOrUpdate()用途和語義可能會使新用戶感到迷惑。 首先,只要你沒有嘗試在某個session中使用來自另一session的實例,你就應(yīng)該不需要使用update(), saveOrUpdate(),或merge()。有些程序從來不用這些方法。

◆通常下面的場景會使用update()或saveOrUpdate():

◆程序在第一個session中加載對象

◆該對象被傳遞到表現(xiàn)層

◆對象發(fā)生了一些改動

◆該對象被返回到業(yè)務(wù)邏輯層

◆程序調(diào)用第二個session的update()方法持久這些改動

◆saveOrUpdate()做下面的事:

◆如果對象已經(jīng)在本session中持久化了,不做任何事

◆如果另一個與本session關(guān)聯(lián)的對象擁有相同的持久化標(biāo)識(identifier),拋出一個異常

◆如果對象沒有持久化標(biāo)識(identifier)屬性,對其調(diào)用save()

◆如果對象的持久標(biāo)識(identifier)表明其是一個新實例化的對象,對其調(diào)用save()

◆如果對象是附帶版本信息的(通過) 并且版本屬性的值表明其是一個新實例化的對象,save()它。

◆否則update() 這個對象

◆merge()可非常不同:

◆如果session中存在相同持久化標(biāo)識(identifier)的實例,用用戶給出的對象的狀態(tài)覆蓋舊有的持久實例

◆如果session沒有相應(yīng)的持久實例,則嘗試從數(shù)據(jù)庫中加載,或創(chuàng)建新的持久化實例

◆最后返回該持久實例

◆用戶給出的這個對象沒有被關(guān)聯(lián)到session上,它依舊是脫管的 。

這就是實現(xiàn)Hibernate自動狀態(tài)檢測的說明。

【編輯推薦】

  1. Hibernate中Criteria攻略詳解
  2. 簡述Hibernate三種查詢的應(yīng)用
  3. 談?wù)凥ibernate為何是Java開源項目
  4. 淺析為何學(xué)習(xí)Hibernate
  5. 淺析Hibernate VO與PO區(qū)別
責(zé)任編輯:仲衡 來源: javanb
相關(guān)推薦

2022-06-03 10:09:32

威脅檢測軟件

2020-07-20 06:35:55

BashLinux

2009-08-25 16:27:10

Mscomm控件

2010-07-13 09:36:25

2020-09-21 09:53:04

FlexCSS開發(fā)

2022-08-26 13:48:40

EPUBLinux

2010-11-19 16:22:14

Oracle事務(wù)

2010-06-23 20:31:54

2024-05-29 07:50:41

2010-11-08 13:54:49

Sqlserver運行

2010-09-27 09:31:42

JVM內(nèi)存結(jié)構(gòu)

2018-06-22 13:05:02

前端JavaScript引擎

2021-01-19 12:00:39

前端監(jiān)控代碼

2013-04-16 10:20:21

云存儲服務(wù)云存儲SLA服務(wù)水平協(xié)議

2021-04-28 10:13:58

zookeeperZNode核心原理

2010-11-15 11:40:44

Oracle表空間

2011-07-18 15:08:34

2018-09-04 16:20:46

MySQ索引數(shù)據(jù)結(jié)構(gòu)

2018-02-24 13:21:02

2013-04-10 11:16:19

iPad的MouseE
點贊
收藏

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