Spring Data JPA中的@DynamicUpdate註解

Spring Data JPA中的@DynamicUpdate註解

使用

    @DynamicUpdate屬於類級別的註解,一般使用在JPA entity 類.如下

@Entity
@DynamicUpdate
public class User {
    // Existing data and methods
}

作用

    它確保Hibernate只更新實體中修改的列。例如

    未使用該註解更新name

update User active=?, name=?, type=?,email=?,phone=?,sex=?,password=? where id=?

    使用該註解更新name

update User name=? where id=?

原理

    當我們使用@DynamicUpdate註解時,Hibernate沒有使用緩存的SQL語句進行更新。相反,它將在每次更新實體時生成一條SQL語句。生成的SQL只包括修改的列。

    爲了找出更改的列,Hibernate需要跟蹤記錄當前實體的狀態。當我們更改實體的任何字段時,它會比較實體的修改前狀態和修改後的狀態。那麼@DynamicUpdate就需要一定的開銷.

使用場景

  1. 如果一個實體包含大量的字段(對應的數據庫表包含大量的列),並且只需要頻繁更新其中的一些列
  2. 當我們使用基於版本的樂觀鎖時,我們需要使用@DynamicUpdate
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章