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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

jpa 根据主键生成策略获取id_JPA主键生成策略

發布時間:2024/10/12 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jpa 根据主键生成策略获取id_JPA主键生成策略 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

@GeneratedValue:

為一個實體類生成一個唯一標識的主鍵(JPA要求每一個實體Entity,必須有且只有一個主鍵)。它有兩個屬性,分別是strategy和generator。

generator:默認為空字符串,它定義了主鍵生成器的名稱,對應的生成器有兩個:對應于同名的主鍵生成器@SequenceGenerator和@TableGenerator。

strategy:一共有四種,被定義在枚舉類GenerationType中,包括:TABLE, SEQUENCE, IDENTITY 和AUTO。

1.GenerationType.TABLE:使用一個特定的數據庫表格來保存主鍵,持久化引擎通過關系數據庫的一張特定的表格來生成主鍵,這種策略的好處就是不依賴于外部環境和數據庫的具體實現,在不同數據庫間可以很容易的進行移植,但由于其不能充分利用數據庫的特性,所以不會優先使用。該策略一般與另外一個注解一起使用@TableGenerator,@TableGenerator注解指定了生成主鍵的表(可以在實體類上指定也可以在主鍵字段或屬性上指定),然后JPA將會根據注解內容自動生成一張表作為序列表(或使用現有的序列表)。如果不指定序列表,則會生成一張默認的序列表,表中的列名也是自動生成,數據庫上會生成一張名為sequence的表(SEQ_NAME,SEQ_COUNT)。序列表一般只包含兩個字段:第一個字段是該生成策略的名稱,第二個字段是該關系表的最大序號,它會隨著數據的插入逐漸累加。例如:

1 @Id2 @GeneratedValue(strategy = GenerationType.TABLE, generator = "id_sequence")3 @TableGenerator(name = "id_sequence", allocationSize = 1, table = "sequence_table", pkColumnName = "sequence_max_id", valueColumnName = "sequence_count")4 private int id;

2.GenerationType.SEQUENCE:在某些數據庫中,不支持主鍵自增長,比如Oracle,其提供了一種叫做"序列(sequence)"的機制生成主鍵。此時,GenerationType.SEQUENCE就可以作為主鍵生成策略。該策略的不足之處正好與TABLE相反,由于只有部分數據庫(Oracle,PostgreSQL,DB2)支持序列對象,所以該策略一般不應用于其他數據庫。類似的,該策略一般與另外一個注解一起使用@SequenceGenerator,@SequenceGenerator注解指定了生成主鍵的序列.然后JPA會根據注解內容創建一個序列(或使用一個現有的序列)。如果不指定序列,則會自動生成一個序列SEQ_GEN_SEQUENCE。例如:

1 @Id2 @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "id_sequence")3 @SequenceGenerator(name = "id_sequence", initialValue = 1, allocationSize = 1, sequenceName = "ID_SEQUENCE")4 private int id;

3.GenerationType.IDENTITY:此種主鍵生成策略就是通常所說的主鍵自增長,數據庫在插入數據時,會自動給主鍵賦值,比如MYSQL可以在創建表時聲明"auto_increment" 來指定主鍵自增長。該策略在大部分數據庫中都提供了支持(指定方法或關鍵字可能不同),但還是有少數數據庫不支持,所以可移植性略差。使用自增長主鍵生成策略是只需要聲明strategy = GenerationType.IDENTITY即可。例如:

1 @Id2 @GeneratedValue(strategy =GenerationType.IDENTITY)3 private int id;

4.GenerationType.AUTO:把主鍵生成策略交給持久化引擎(persistence engine),持久化引擎會根據數據庫在以上三種主鍵生成策略中選擇其中一種。此種主鍵生成策略比較常用,由于JPA默認的生成策略就是GenerationType.AUTO,所以使用此種策略時.可以顯式的指定@GeneratedValue(strategy = GenerationType.AUTO)也可以直接@GeneratedValue。例如:

@GeneratedValue(strategy =GenerationType.AUTO)private int id;

@GenericGenerator:

是HIbernate提供的自定義主鍵策略生成器,它需要和@GeneratedValue一起使用,并且它的name屬性要和@GeneratedValue中的generator名稱要一致。

@GenericGenerator支持13種策略,分別是:

1 static{2

3 GENERATORS.put("uuid", UUIDHexGenerator.class);4

5 GENERATORS.put("hilo", TableHiLoGenerator.class);6

7 GENERATORS.put("assigned", Assigned.class);8

9 GENERATORS.put("identity", IdentityGenerator.class);10

11 GENERATORS.put("select", SelectGenerator.class);12

13 GENERATORS.put("sequence", SequenceGenerator.class);14

15 GENERATORS.put("seqhilo", SequenceHiLoGenerator.class);16

17 GENERATORS.put("increment", IncrementGenerator.class);18

19 GENERATORS.put("foreign", ForeignGenerator.class);20

21 GENERATORS.put("guid", GUIDGenerator.class);22

23 GENERATORS.put("uuid.hex", UUIDHexGenerator.class); //uuid.hex is deprecated

24

25 GENERATORS.put("sequence-identity", SequenceIdentityGenerator.class);26

27 }

上面的12種策略,再加上native,一共是13種。其實,這就是hibernate對JPA策略的一種拓展補充。舉個例子:

1 @GeneratedValue(generator = "paymentableGenerator")2 @GenericGenerator(name = "paymentableGenerator", strategy = "uuid")3 private int id;

它會根據內部程序計算出32位長度的唯一id。

參考:

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的jpa 根据主键生成策略获取id_JPA主键生成策略的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 36d大奶| 亚洲精品欧美日韩 | 手机av免费看 | 日韩有码在线播放 | 日本手机看片 | 丝袜一区二区三区四区 | 我的公把我弄高潮了视频 | 蜜桃av噜噜一区二区三区 | 自拍偷拍第 | 欧美激情视频网 | 麻豆爱爱视频 | 人妻偷人精品一区二区三区 | 中文字幕精品一区二区精 | 成人小视频在线观看 | 天天摸天天碰 | 久久这里只有精品99 | 免费成人黄色网 | 哪里可以免费看毛片 | 9999国产精品 | 中文无码精品一区二区三区 | 欧美日韩中| 日日骑 | 国产乱码精品一区二区 | 影音先锋亚洲一区 | 99re这里只有精品在线 | 8090理论片午夜理伦片 | 极品国产91在线网站 | 四虎视频国产精品免费入口 | 丰满少妇aaaaaa爰片毛片 | 国产精品亚洲αv天堂无码 伊人性视频 | 五月天激情影院 | 国产黄色在线免费观看 | 欧美另类国产 | 欧美亚洲丝袜 | 在线一二三区 | 国产精品白嫩极品美女视频 | 视频污在线观看 | 亚洲视频在线一区 | 亚洲精品欧洲精品 | 91中文字幕在线 | 青青草原国产在线观看 | 国产亚洲激情 | 在线视频精品免费 | 日本免费不卡视频 | 精品亚洲天堂 | 97色资源 | 日日燥夜夜燥 | 无码国产69精品久久久久网站 | 青春草在线视频免费观看 | 欧美成人精品在线观看 | 亚洲国产中文字幕在线 | 午夜av毛片| 性猛╳xxx乱大交 | 99久久久无码国产 | 激情小说欧美色图 | 黄色成人在线免费观看 | 麻豆午夜视频 | 久久精品免费观看 | 爱啪啪av| 九九免费视频 | 尹人香蕉| 热の国产 | 欧美亚洲福利 | 精品国产免费无码久久久 | 在线天堂中文在线资源网 | av黄在线| 精品深夜av无码一区二区老年 | 欧美一级在线观看 | 免费黄色在线看 | 狠狠操很很干 | 青青草成人影视 | 亚洲va天堂va欧美ⅴa在线 | 久久精品成人一区二区三区蜜臀 | 欧美视频一区二区在线 | 免费看h网站| 欧美黄色a级 | 午夜精品久久久久 | 岛国免费视频 | 免费的污网站 | 91丨国产丨白丝 | 一区在线不卡 | 碧蓝之海动漫在线观看免费高清 | 国产乡下妇女三片 | 国产又黄又嫩又滑又白 | 少妇又色又紧又爽又刺激视频 | 日韩超碰在线 | 狼色网 | 伊人久久中文 | 在线观看视频二区 | 丰满少妇在线观看资源站 | 黄色av免费在线观看 | 大尺度做爰呻吟舌吻网站 | 国产凹凸一区二二区 | 国产日韩欧美精品一区二区 | 国产日韩欧美视频在线 | 午夜免费在线观看 | 超碰激情在线 | 久久图库| 91免费成人 |