hibernate中OID代表什么

原文鏈接http://zhhll.icu/2020/12/12/%E6%A1%86%E6%9E%B6/hibernate/OID%E6%98%A0%E5%B0%84%E5%AF%B9%E8%B1%A1%E6%A0%87%E8%AF%86%E7%AC%A6/

OID映射對象標識符

OID存在的意義

關(guān)系型數(shù)據(jù)庫通過主鍵來區(qū)分同一張表的不同數(shù)據(jù),java語言使用內(nèi)存地址來區(qū)分同一類的不同對象修械,hibernate則使用OID來同一兩者之間的矛盾崔泵,在運行時规丽,hibernate通過OID來維持java對象和數(shù)據(jù)庫表中記錄的對應關(guān)系。

OID的配置

在hibernate映射文件中配置猎贴,使用<id>元素來設置對象標識符

<id name="id" type="java.lang.Integer">
  <column name="id"/>
  <generator class="increment"/>
</id>

<generator>子元素來設定標識符生成器瘟檩,標識符生成器的接口為org.hibernate.id.IdentifierGenerator接口,以及提供了幾種內(nèi)置的實現(xiàn)

  • increment Hibernate以遞增的方式賦值 先查該表的id最大值安接,再加一 存在并發(fā)問題
  • identity 由底層數(shù)據(jù)庫生成,需要把主鍵設置為自增的(需要底層數(shù)據(jù)庫支持自增 如DB2英融、Mysql盏檐、SQL SERVER)
  • sequence 底層數(shù)據(jù)庫序列生成(需要底層數(shù)據(jù)庫支持序列 如Oracle、DB2驶悟、PostgreSQL)
  • hilo 由hibernate按照一種high/low算法生成胡野,hibernate把特定表的字段最為high值。默認為hibernate_unique_key表的next_hi字段 注意:hilo的方式需要在單獨的事務中處理痕鳍,不使用session對象的當前數(shù)據(jù)庫連接和事務硫豆,而是單獨的在一個新的數(shù)據(jù)庫連接中創(chuàng)建新的事務,與spring結(jié)合時以及配置數(shù)據(jù)源時注意不可使用該方式生成
  • native 根據(jù)底層數(shù)據(jù)庫對自動生成主鍵的支持能力额获,來選擇identity,sequence或hilo生成器
  • uuid.hex hibernate采用128位的UUID生成
  • assigned 由java程序負責生成
  • select 由數(shù)據(jù)庫中的觸發(fā)器來生成
  • foreign 用另一個關(guān)聯(lián)對象的標識符來作為當前對象的標識符够庙,主要用于一對一關(guān)聯(lián)關(guān)系

復合主鍵的配置

復合主鍵的配置使用<composite-id>

<composite-id>
  <key-property name="name" column="name" type="java.lang.String"/>
  <key-property name="companyId" column="company_id" type="java.lang.Long"/>
</composite-id>

注意在使用復合主鍵時恭应,需要定義version版本控制屬性抄邀,用來區(qū)分臨時對象和游離對象,判斷是保存還是更新

<!-- 表示當對象的version對象為null時為游離對象昼榛,還沒有被保存過 -->
<version name="version" column="version" unsaved-value="null"/>

由于本身的博客百度沒有收錄境肾,博客地址http://zhhll.icu

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末剔难,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子奥喻,更是在濱河造成了極大的恐慌偶宫,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件环鲤,死亡現(xiàn)場離奇詭異纯趋,居然都是意外死亡,警方通過查閱死者的電腦和手機冷离,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進店門吵冒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人西剥,你說我怎么就攤上這事痹栖。” “怎么了瞭空?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵揪阿,是天一觀的道長。 經(jīng)常有香客問我咆畏,道長南捂,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任旧找,我火速辦了婚禮黑毅,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘钦讳。我一直安慰自己矿瘦,他們只是感情好,可當我...
    茶點故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布愿卒。 她就那樣靜靜地躺著缚去,像睡著了一般。 火紅的嫁衣襯著肌膚如雪琼开。 梳的紋絲不亂的頭發(fā)上易结,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天,我揣著相機與錄音柜候,去河邊找鬼搞动。 笑死,一個胖子當著我的面吹牛渣刷,可吹牛的內(nèi)容都是我干的鹦肿。 我是一名探鬼主播,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼辅柴,長吁一口氣:“原來是場噩夢啊……” “哼箩溃!你這毒婦竟也來了瞭吃?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤涣旨,失蹤者是張志新(化名)和其女友劉穎歪架,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體霹陡,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡和蚪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了烹棉。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片惠呼。...
    茶點故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖峦耘,靈堂內(nèi)的尸體忽然破棺而出剔蹋,到底是詐尸還是另有隱情,我是刑警寧澤辅髓,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布泣崩,位于F島的核電站,受9級特大地震影響洛口,放射性物質(zhì)發(fā)生泄漏矫付。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一第焰、第九天 我趴在偏房一處隱蔽的房頂上張望买优。 院中可真熱鬧,春花似錦挺举、人聲如沸杀赢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽脂崔。三九已至,卻和暖如春梧喷,著一層夾襖步出監(jiān)牢的瞬間砌左,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工铺敌, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留汇歹,地道東北人。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓偿凭,卻偏偏與公主長得像产弹,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子笔喉,可洞房花燭夜當晚...
    茶點故事閱讀 42,802評論 2 345

推薦閱讀更多精彩內(nèi)容