日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql修改主键生成策略信息_常用Hibernate 主键生成策略

發布時間:2023/12/4 数据库 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql修改主键生成策略信息_常用Hibernate 主键生成策略 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.Assigned

Assigned方式由程序生成主鍵值,并且要在save()之前指定否則會拋出異常

特點:主鍵的生成值完全由用戶決定,與底層數據庫無關。用戶需要維護主鍵值,在調用session.save()之前要指定主鍵值。

2.Hilo

Hilo使用高低位算法生成主鍵,高低位算法使用一個高位值和一個低位值,然后把算法得到的兩個值拼接起來作為數據庫中的唯一主鍵。Hilo方式需要額外的數據庫表和字段提供高位值來源。默認請況下使用的表是

hibernate_unique_key,默認字段叫作next_hi。next_hi必須有一條記錄否則會出現錯誤。

特點:需要額外的數據庫表的支持,能保證同一個數據庫中主鍵的唯一性,但不能保證多個數據庫之間主鍵的唯一性。Hilo主鍵生成方式由Hibernate 維護,所以Hilo方式與底層數據庫無關,但不應該手動修改hi/lo算法使用的表的值,否則會引起主鍵重復的異常。

3.Increment

Increment方式對主鍵值采取自動增長的方式生成新的主鍵值,但要求底層數據庫的支持Sequence。如Oracle,DB2等。需要在映射文件xxx.hbm.xml中加入Increment標志符的設置。

特點:由Hibernate本身維護,適用于所有的數據庫,不適合多進程并發更新數據庫,適合單一進程訪問數據庫。不能用于群集環境。

4.Identity

Identity當時根據底層數據庫,來支持自動增長,不同的數據庫用不同的主鍵增長方式。

特點:與底層數據庫有關,要求數據庫支持Identity,如MySQl中是 auto_increment, SQL Server 中是Identity,支持的數據庫有MySql、SQLServer、DB2、Sybase和HypersonicSQL。 Identity無需Hibernate和用戶的干涉,使用較為方便,但不便于在不同的數據庫之間移植程序。

5.Sequence

Sequence需要底層數據庫支持Sequence方式,例如Oracle數據庫等

特點:需要底層數據庫的支持序列,支持序列的數據庫有DB2、PostgreSql、Qracle、SAPDb等在不同數據庫之間移植程序,特別從支持序列的數據庫移植到不支持序列的數據庫需要修改配置文件

6.Native

Native主鍵生成方式會根據不同的底層數據庫自動選擇Identity、Sequence、Hilo主鍵生成方式。

特點:根據不同的底層數據庫采用不同的主鍵生成方式。由于Hibernate會根據底層數據庫采用不同的映射方式,因此便于程序移植,項目中如果用到多個數據庫時,可以使用這種方式。

7.UUID

UUID使用128位UUID算法生成主鍵,能夠保證網絡環境下的主鍵唯一性,也就能夠保證在不同數據庫及不同服務器下主鍵的唯一性。

特點;能夠保證數據庫中的主鍵唯一性,生成的主鍵占用比較多的存貯空間

8.Foreign

Foreign用于一對一關系中,保證生成主鍵的唯一性,支持SQL Server和MySQL。

總結

以上是生活随笔為你收集整理的mysql修改主键生成策略信息_常用Hibernate 主键生成策略的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。