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
的值。
沒有留言:
張貼留言