欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JPA @GeneratedValue 四種標準用法TABLE,SEQUENCE,IDENTITY,AUTO詳解

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

一、JPA通用策略生成器 

JPA提供四種標準用法,由@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提供的四種標準用法為TABLE,SEQUENCE,IDENTITY,AUTO. 
TABLE:使用一個特定的數(shù)據(jù)庫表格來保存主鍵。 
SEQUENCE:根據(jù)底層數(shù)據(jù)庫的序列來生成主鍵,條件是數(shù)據(jù)庫支持序列。 
IDENTITY:主鍵由數(shù)據(jù)庫自動生成(主要是自動增長型) 
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)  
)

插入紀錄,供生成主鍵使用

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

在主鍵生成后,這條紀錄的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ù)庫中的“tb_generator”。 
catalog屬性和schema具體指定表所在的目錄名或是數(shù)據(jù)庫名。 
pkColumnName屬性的值表示在持久化表中,該主鍵生成策略所對應(yīng)鍵值的名稱。例如在“tb_generator”中將“gen_name”作為主鍵的鍵值 
valueColumnName屬性的值表示在持久化表中,該主鍵當前所生成的值,它的值將會隨著每次創(chuàng)建累加。例如,在“tb_generator”中將“gen_value”作為主鍵的值 
pkColumnValue屬性的值表示在持久化表中,該生成策略所對應(yīng)的主鍵。例如在“tb_generator”表中,將“gen_name”的值為“CUSTOMER_PK”。 
initialValue表示主鍵初識值,默認為0。 
allocationSize表示每次主鍵值增加的大小,例如設(shè)置成1,則表示每次創(chuàng)建新記錄后自動加1,默認為50。 
UniqueConstraint與@Table標記中的用法類似。 

二: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ù)庫序列名稱。 
initialValue表示主鍵初識值,默認為0。 
allocationSize表示每次主鍵值增加的大小,例如設(shè)置成1,則表示每次創(chuàng)建新記錄后自動加1,默認為50。 

三:IDENTITY 

@Id  
@GeneratedValue(strategy = GenerationType.IDENTITY)

四:AUTO

@Id  
@GeneratedValue(strategy = GenerationType.AUTO)

在指定主鍵時,如果不指定主鍵生成策略,默認為AUTO。 

@Id

跟下面的定義是一樣的

@Id  
@GeneratedValue(strategy = GenerationType.AUTO)

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

相關(guān)文章

  • Mybatis自關(guān)聯(lián)查詢一對多查詢的實現(xiàn)示例

    Mybatis自關(guān)聯(lián)查詢一對多查詢的實現(xiàn)示例

    這篇文章主要介紹了Mybatis自關(guān)聯(lián)查詢一對多查詢的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • 教你在一分鐘之內(nèi)理解Java Lambda表達式并學(xué)會使用

    教你在一分鐘之內(nèi)理解Java Lambda表達式并學(xué)會使用

    今天給大家?guī)У奈恼率荍ava8新特性的相關(guān)知識,文章圍繞著如何在一分鐘之內(nèi)理解Java Lambda表達式并學(xué)會使用展開,文中有非常詳細的介紹,需要的朋友可以參考下
    2021-06-06
  • Java簡單實現(xiàn)約瑟夫環(huán)算法示例

    Java簡單實現(xiàn)約瑟夫環(huán)算法示例

    這篇文章主要介紹了Java簡單實現(xiàn)約瑟夫環(huán)算法,簡單描述了約瑟夫環(huán)問題,并結(jié)合實例形式分析了Java實現(xiàn)約瑟夫環(huán)的具體操作技巧,需要的朋友可以參考下
    2017-09-09
  • IDEA遠程管理docker鏡像及容器服務(wù)的實現(xiàn)

    IDEA遠程管理docker鏡像及容器服務(wù)的實現(xiàn)

    本文主要介紹了IDEA遠程管理docker鏡像及容器服務(wù)的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • spring boot教程之全局處理異常封裝

    spring boot教程之全局處理異常封裝

    這篇文章主要給大家介紹了關(guān)于spring boot教程之全局處理異常封裝的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用spring boot具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • springboot項目使用Disruptor做內(nèi)部消息隊列的實現(xiàn)

    springboot項目使用Disruptor做內(nèi)部消息隊列的實現(xiàn)

    本文主要介紹了springboot項目使用Disruptor做內(nèi)部消息隊列的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • springboot請求找不到路徑異常的問題

    springboot請求找不到路徑異常的問題

    這篇文章主要介紹了springboot請求找不到路徑異常的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • 深入講解Java 9中的九個新特性

    深入講解Java 9中的九個新特性

    Java 8 發(fā)布三年多之后,即將快到2017年7月下一個版本發(fā)布的日期了。 你可能已經(jīng)聽說過 Java 9 的模塊系統(tǒng),但是這個新版本還有許多其它的更新。 這里有九個令人興奮的新功能將與 Java 9 一起發(fā)布。需要的朋友可以參考學(xué)習(xí),下面來一起看看吧。
    2017-05-05
  • 詳解Spring Boot Security工作流程

    詳解Spring Boot Security工作流程

    Spring Security,這是一種基于 Spring AOP 和 Servlet 。這篇文章主要介紹了Spring Boot Security的相關(guān)知識,需要的朋友可以參考下
    2019-04-04
  • SpringBoot中@KafkaListener使用${}動態(tài)指定topic問題

    SpringBoot中@KafkaListener使用${}動態(tài)指定topic問題

    在SpringKafka中,使用${}引用Spring屬性配置,可以在不同環(huán)境中重新配置topic名稱,而無需修改代碼,在application.properties或application.yml中定義topic名稱,并在代碼中使用${}引用
    2024-12-12

最新評論