讓Primary Key交給JPA處理
讓Primary Key交給JPA處理 目的 透過本篇文章了解自動產生Primary Key的方法,大綱如下: GeneratedValue GenericGenerator (UUID) SequenceGenerator (透過Database的sequence) GeneratedValue快速產生Primary Key GenerateValue最快速且最常用的方法,通常是直接使用GenerateValue annotation如下就結束 @Getter @Setter @Entity @Table(name = "user") public class User { @Id @GeneratedValue private long id; private String name; } 更進一步了解,GenerateValue包含了strategy屬性,要讓他不做而外行為,自動生產的屬性有 GenerationType.IDENTITY GenerationType.AUTO 此為@GeneratedValue預設的策略參數,如沒特別設定則使用的參數就為此 注意: 不是每個資料庫都支援此功能 IDENTITY 和 AUTO 差異 GenerationType.AUTO是整個使用到此標籤的Primary key都共用一個記數器。 代表如果今天有兩個物件都自動產生Primary Key的話,當A物件產出後pk計數器則會跳到1,若是在產製B物件則此B物件的pk則會變成2,而不是從1開始。 GenerationType.IDENTITY則是使用到個別的計數器。 和上方AUTO成反例,A和B物件都會個別產出自己的計數器。 程式碼 @Data @Entity @Table(name = "user") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private long id; private String name; } @Data @Entity @Table(name = "use...