網頁

2018/7/26

Hibernate JPA Entity Listeners

Hibernate JPA可以使用下面的實體監聽器Entity Listeners來偵測新增,查詢,刪除,修改(CRUD)執行時的動作,並在執行的前後插入其他要執行的方法。

  • @PrePersist:新增前執行
  • @PreRemove:刪除前執行
  • @PostPersist:新增後執行
  • @PostRemove:刪除後執行
  • @PreUpdate:更新前執行
  • @PostUpdate:更新後執行
  • @PostLoad:載入後執行

目前我所用的實際例子是每個資料表都會有修改人員updateBy欄位記錄,所以設定了一個@MappedSuperclass類別(BaseEntity)來讓所有的Entity類別都繼承,因此所有的Entity皆會有BaseEntity中的屬性。

@MappedSuperclass
public class BaseEntity {
    
    @Column(name="UpdateBy")
    private String updateBy;

    // ommitted getter and setter
    
    @PrePersist
    public void prePersist() {
        updateBy = CommonUtil.getUserName()
    }
    @PreUpdate
    public void preUpdate() {
        updateBy = CommonUtil.getUserName()
    }
}

因為所有Entity都繼承此類別,所以在新增及修改的時候分別會呼叫prePersist()preUpdate()方法,並將目前登入的使用者名稱設為更updateBy的值。



沒有留言:

張貼留言