當我使用
@Id
@GeneratedValue(
strategy = GenerationType.SEQUENCE
)
private Long id;
這是否意味著,在每個物體創建時,ORM 框架都會查詢資料庫以更新序串列?它可以被優化,例如通過塊嗎?
uj5u.com熱心網友回復:
@GeneratedValue 進一步公開了定義生成器的選項:
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "id_generator")
@SequenceGenerator(name="id_generator", sequenceName = "id_seq", allocationSize=50)
private Long id;
啟用此功能,Hibernate 將為每個會話分配 50 個 id 的批次。然后,該批次將被預取 50 個范圍,這可以提供更好的性能。
還有一些額外的事情需要考慮,例如,如果會話過早關閉/終止,我們將丟失分配的序列 ID。
以下深入討論了有關警告/解決方案的更多資訊:https ://www.jpa-buddy.com/blog/the-ultimate-guide-on-db-generated/
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/459045.html
上一篇:為什么當我們使用getReference()和remove()時,getReference()會命中資料庫并導致SELECT陳述句
