最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JPA @GeneratedValue 四種標(biāo)準(zhǔn)用法TABLE,SEQUENCE,IDENTITY,AUTO詳解

 更新時(shí)間:2024年03月17日 08:35:26   作者:豬腳踏浪  
這篇文章主要介紹了@GeneratedValue 四種標(biāo)準(zhǔn)用法TABLE,SEQUENCE,IDENTITY,AUTO詳解,需要的朋友可以參考下

一、JPA通用策略生成器 

JPA提供四種標(biāo)準(zhǔn)用法,由@GeneratedValue的源代碼:

@Target({METHOD,FIELD})    
    @Retention(RUNTIME)    
    public @interface GeneratedValue{    
        GenerationType strategy() default AUTO;    
        String generator() default "";    
    }

其中GenerationType: 

public enum GenerationType{    
    TABLE,    
    SEQUENCE,    
    IDENTITY,    
    AUTO   
}

JPA提供的四種標(biāo)準(zhǔn)用法為TABLE,SEQUENCE,IDENTITY,AUTO. 
TABLE:使用一個(gè)特定的數(shù)據(jù)庫(kù)表格來保存主鍵。 
SEQUENCE:根據(jù)底層數(shù)據(jù)庫(kù)的序列來生成主鍵,條件是數(shù)據(jù)庫(kù)支持序列。 
IDENTITY:主鍵由數(shù)據(jù)庫(kù)自動(dòng)生成(主要是自動(dòng)增長(zhǎng)型) 
AUTO:主鍵由程序控制。 

一:TABLE

@Id  
@GeneratedValue(strategy = GenerationType.TABLE, generator="payablemoney_gen")  
@TableGenerator(name = "pk_gen",  
    table="tb_generator",  
    pkColumnName="gen_name",  
    valueColumnName="gen_value",  
    pkColumnValue="PAYABLEMOENY_PK",  
    allocationSize=1  
)

這里應(yīng)用表tb_generator,定義為 

CREATE TABLE  tb_generator (  
  id NUMBER NOT NULL,  
  gen_name VARCHAR2(255) NOT NULL,  
  gen_value NUMBER NOT NULL,  
  PRIMARY KEY(id)  
)

插入紀(jì)錄,供生成主鍵使用

INSERT INTO tb_generator(id, gen_name, gen_value) VALUES (1,PAYABLEMOENY_PK', 1);

在主鍵生成后,這條紀(jì)錄的value值,按allocationSize遞增。 

@TableGenerator的定義:

@Target({TYPE, METHOD, FIELD})   
@Retention(RUNTIME)  
public @interface TableGenerator {  
  String name();  
  String table() default "";  
  String catalog() default "";  
  String schema() default "";  
  String pkColumnName() default "";  
  String valueColumnName() default "";  
  String pkColumnValue() default "";  
  int initialValue() default 0;  
  int allocationSize() default 50;  
  UniqueConstraint[] uniqueConstraints() default {};  
}

其中屬性說明: 
name屬性表示該表主鍵生成策略的名稱,它被引用在@GeneratedValue中設(shè)置的“generator”值中。 
table屬性表示表生成策略所持久化的表名,例如,這里表使用的是數(shù)據(jù)庫(kù)中的“tb_generator”。 
catalog屬性和schema具體指定表所在的目錄名或是數(shù)據(jù)庫(kù)名。 
pkColumnName屬性的值表示在持久化表中,該主鍵生成策略所對(duì)應(yīng)鍵值的名稱。例如在“tb_generator”中將“gen_name”作為主鍵的鍵值 
valueColumnName屬性的值表示在持久化表中,該主鍵當(dāng)前所生成的值,它的值將會(huì)隨著每次創(chuàng)建累加。例如,在“tb_generator”中將“gen_value”作為主鍵的值 
pkColumnValue屬性的值表示在持久化表中,該生成策略所對(duì)應(yīng)的主鍵。例如在“tb_generator”表中,將“gen_name”的值為“CUSTOMER_PK”。 
initialValue表示主鍵初識(shí)值,默認(rèn)為0。 
allocationSize表示每次主鍵值增加的大小,例如設(shè)置成1,則表示每次創(chuàng)建新記錄后自動(dòng)加1,默認(rèn)為50。 
UniqueConstraint與@Table標(biāo)記中的用法類似。 

二:SEQUENCE

@Id  
@GeneratedValue(strategy = GenerationType.SEQUENCE,generator="payablemoney_seq")  
@SequenceGenerator(name="payablemoney_seq", sequenceName="seq_payment")

@SequenceGenerator定義

@Target({TYPE, METHOD, FIELD})   
@Retention(RUNTIME)  
public @interface SequenceGenerator {  
 String name();  
 String sequenceName() default "";  
 int initialValue() default 0;  
 int allocationSize() default 50;  
}

name屬性表示該表主鍵生成策略的名稱,它被引用在@GeneratedValue中設(shè)置的“generator”值中。 
sequenceName屬性表示生成策略用到的數(shù)據(jù)庫(kù)序列名稱。 
initialValue表示主鍵初識(shí)值,默認(rèn)為0。 
allocationSize表示每次主鍵值增加的大小,例如設(shè)置成1,則表示每次創(chuàng)建新記錄后自動(dòng)加1,默認(rèn)為50。 

三:IDENTITY 

@Id  
@GeneratedValue(strategy = GenerationType.IDENTITY)

四:AUTO

@Id  
@GeneratedValue(strategy = GenerationType.AUTO)

在指定主鍵時(shí),如果不指定主鍵生成策略,默認(rèn)為AUTO。 

@Id

跟下面的定義是一樣的

@Id  
@GeneratedValue(strategy = GenerationType.AUTO)

以上就是JPA @GeneratedValue 四種標(biāo)準(zhǔn)用法TABLE,SEQUENCE,IDENTITY,AUTO詳解的詳細(xì)內(nèi)容,更多關(guān)于JPA @GeneratedValue 四種標(biāo)準(zhǔn)用法的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Spring+Http請(qǐng)求+HttpClient實(shí)現(xiàn)傳參

    Spring+Http請(qǐng)求+HttpClient實(shí)現(xiàn)傳參

    這篇文章主要介紹了Spring+Http請(qǐng)求+HttpClient實(shí)現(xiàn)傳參,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • Java編程中快速排序算法的實(shí)現(xiàn)及相關(guān)算法優(yōu)化

    Java編程中快速排序算法的實(shí)現(xiàn)及相關(guān)算法優(yōu)化

    這篇文章主要介紹了Java編程中快速排序算法的實(shí)現(xiàn)及相關(guān)算法優(yōu)化,快速排序算法的最差時(shí)間復(fù)雜度為(n^2),最優(yōu)時(shí)間復(fù)雜度為(n\log n),存在優(yōu)化的空間,需要的朋友可以參考下
    2016-05-05
  • Spring事務(wù)失效之常見場(chǎng)景分析

    Spring事務(wù)失效之常見場(chǎng)景分析

    這篇文章主要介紹了Spring事務(wù)失效之常見場(chǎng)景,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • Java編程Retry重試機(jī)制實(shí)例詳解

    Java編程Retry重試機(jī)制實(shí)例詳解

    這篇文章主要介紹了Java編程Retry重試機(jī)制實(shí)例詳解,分享了相關(guān)代碼示例,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02
  • Java的枚舉enum示例詳解

    Java的枚舉enum示例詳解

    這篇文章主要給大家介紹了關(guān)于Java的枚舉enum的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Java具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Spring中的@Qualifier注解和@Resource注解區(qū)別解析

    Spring中的@Qualifier注解和@Resource注解區(qū)別解析

    這篇文章主要介紹了Spring中的@Qualifier注解和@Resource注解區(qū)別解析,@Qualifier注解的用處是當(dāng)一個(gè)接口有多個(gè)實(shí)現(xiàn)的時(shí)候,為了指名具體調(diào)用哪個(gè)類的實(shí)現(xiàn),@Resource注解可以通過 byName命名和byType類型的方式注入,需要的朋友可以參考下
    2023-11-11
  • java lambda 表達(dá)式中的雙冒號(hào)的用法說明 ::

    java lambda 表達(dá)式中的雙冒號(hào)的用法說明 ::

    這篇文章主要介紹了java lambda 表達(dá)式中的雙冒號(hào)的用法說明 ::具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • 詳解如何將已有項(xiàng)目改造為Spring Boot項(xiàng)目

    詳解如何將已有項(xiàng)目改造為Spring Boot項(xiàng)目

    本篇文章主要介紹了如何將已有項(xiàng)目改造為Spring Boot項(xiàng)目,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-11-11
  • JAVA Iterator接口與增強(qiáng)for循環(huán)的實(shí)現(xiàn)

    JAVA Iterator接口與增強(qiáng)for循環(huán)的實(shí)現(xiàn)

    這篇文章主要介紹了JAVA Iterator接口與增強(qiáng)for循環(huán)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Mac安裝多個(gè)JDK并實(shí)現(xiàn)動(dòng)態(tài)切換

    Mac安裝多個(gè)JDK并實(shí)現(xiàn)動(dòng)態(tài)切換

    有時(shí)候我們有多個(gè)項(xiàng)目需要使用多個(gè)版本JDK,本文主要介紹了Mac安裝多個(gè)JDK并實(shí)現(xiàn)動(dòng)態(tài)切換,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07

最新評(píng)論

郯城县| 上犹县| 铁力市| 卓资县| 延寿县| 岑巩县| 河间市| 宾川县| 平昌县| 城固县| 肃宁县| 无锡市| 安岳县| 巫山县| 米脂县| 鹤庆县| 五指山市| 玛多县| 长沙县| 嘉鱼县| 万宁市| 清水县| 景谷| 宜兴市| 柳河县| 根河市| 雷州市| 彝良县| 莱西市| 鄂伦春自治旗| 无锡市| 富平县| 仁寿县| 林州市| 永定县| 柞水县| 镇远县| 蒙山县| 禹城市| 江达县| 樟树市|