Hibernate學習心得--映射對象標識符
作者:Flyingis
在關系數(shù)據(jù)庫中的主鍵可分為自然主鍵(具有業(yè)務含義)和代理主鍵(不具有業(yè)務含義),其中代理主鍵可以適應不斷變化的業(yè)務需求,因此更加流行。代理主鍵通常為整數(shù)類型,與此對應,在持久化類中野應該把OID定義為整數(shù)類型,Hibernate允許把OID定義為short、int和long類型,以及它們的包裝類型。
Hibernate提供了幾種內(nèi)置標識符生成器,每一種標識符生成器都有它的使用范圍,應該根據(jù)所使用的數(shù)據(jù)庫和Hibernate應用的軟件架構來選擇合適的標識符生成器。下面是幾種常用數(shù)據(jù)庫系統(tǒng)可使用的標識符生成器:
MYSQL: identity increment hilo native
MS SQL Server: identity increment hilo native
Oracle: sequence seqhilo hilo increment native
夸平臺開發(fā): native
OID是為持久化層服務的,它不具備業(yè)務含義,而域?qū)ο笪挥跇I(yè)務邏輯層,用來描述業(yè)務模型。因此,在域?qū)ο笾袕娦屑尤氩痪邆錁I(yè)務含義的OID,可以看作是持久化層對業(yè)務邏輯層的一種滲透,但這種滲透是不可避免的,否則Hibernate就無法建立緩存中的對象與數(shù)據(jù)庫中記錄的對應關系。
當然,映射中還包括自然主鍵的映射方案。對于從頭設計的關系數(shù)據(jù)庫模型,應該優(yōu)先考慮使用代理主鍵。
在關系數(shù)據(jù)庫中的主鍵可分為自然主鍵(具有業(yè)務含義)和代理主鍵(不具有業(yè)務含義),其中代理主鍵可以適應不斷變化的業(yè)務需求,因此更加流行。代理主鍵通常為整數(shù)類型,與此對應,在持久化類中野應該把OID定義為整數(shù)類型,Hibernate允許把OID定義為short、int和long類型,以及它們的包裝類型。
Hibernate提供了幾種內(nèi)置標識符生成器,每一種標識符生成器都有它的使用范圍,應該根據(jù)所使用的數(shù)據(jù)庫和Hibernate應用的軟件架構來選擇合適的標識符生成器。下面是幾種常用數(shù)據(jù)庫系統(tǒng)可使用的標識符生成器:
MYSQL: identity increment hilo native
MS SQL Server: identity increment hilo native
Oracle: sequence seqhilo hilo increment native
夸平臺開發(fā): native
OID是為持久化層服務的,它不具備業(yè)務含義,而域?qū)ο笪挥跇I(yè)務邏輯層,用來描述業(yè)務模型。因此,在域?qū)ο笾袕娦屑尤氩痪邆錁I(yè)務含義的OID,可以看作是持久化層對業(yè)務邏輯層的一種滲透,但這種滲透是不可避免的,否則Hibernate就無法建立緩存中的對象與數(shù)據(jù)庫中記錄的對應關系。
當然,映射中還包括自然主鍵的映射方案。對于從頭設計的關系數(shù)據(jù)庫模型,應該優(yōu)先考慮使用代理主鍵。
posted on 2005-11-14 10:43 Flyingis 閱讀(699) 評論(0) 編輯 收藏 所屬分類: Hibernate