在JPA中請優先使用sequence策略生成實體識別符號的值 - Vlad Mihalcea

banq發表於2020-05-21

使用資料庫sequence是最有效的Hibernate識別符號/主鍵生成策略,因為能利用自動JDBC批處理機制

註釋實體使用@Id和@GeneratedValue,@Id是強制性的,@Id必須被對映到具有唯一約束的表列。通常,@Id註釋應對映到“主鍵”表列。

如果不使用@GeneratedValue註釋,必須手工賦值實體識別符號,而使用@GeneratedValue由JPA自動生成實體表示符時,需要一些策略。

public class Post {
 
    @Id
    @GeneratedValue(
        strategy = GenerationType.SEQUENCE
    )
    private Long id;

GenerationType列舉定義了四個實體識別符號生成策略:

  • IDENTITY允許使用表標識列,例如MySQL AUTO_INCREMENT。對於JPA和Hibernate,如果關聯式資料庫支援SEQUENCE(下面的第二種),則應該優先使用SEQUENCE而不是IDENTITY,因為在使用IDENTITY生成器持久儲存實體時,Hibernate無法使用自動JDBC批處理。
  • SEQUENCE允許使用資料庫序列物件生成識別符號值。當使用JPA和Hibernate時,這是最佳的生成策略。
  • TABLE使用單獨的表模擬資料庫序列生成器。這是一個糟糕的策略,您不應該使用它。
  • AUTO 根據基礎資料庫功能選擇任何先前的策略。

具體點選標題見原文

 

相關文章