JPA生命週期事件批註

生命週期事件批註

如果需要在生命週期事件期間執行自定義邏輯,請使用以下生命週期事件批註關聯生命週期事件與回調方法:
圖 1-1 演示了 JPA 支持的實體生命週期事件之間的關係。
可以直接對實體方法進行批註,也可以指定一個或多個實體監聽程序類(請參閱 @EntityListeners)。
如果直接對實體方法進行批註,則該實體方法必須滿足以下要求:
  • 實體類方法必須具有以下簽名:
    public int <MethodName>()

  • 實體類方法可以有任何方法名稱,只要它不以 ejb 開頭。
圖 1-1 JPA 實體生命週期回調事件批註
隨後是圖
“圖 1-1 JPA 實體生命週期回調事件批註”的描述”

@PostLoad

將實體加載到數據庫的當前持續性上下文中後或在向其應用了刷新操作後,調用實體的 @PostLoad 方法。在返回或訪問查詢結果之前或在遍歷關聯之前調用該方法。
如果要在實體生命週期中的該點調用自定義邏輯,請使用 @PostLoad 批註。
此批註沒有屬性。有關更多詳細信息,請參閱 API

@PostPersist

在實體成爲持久實體後,調用該實體的 @PostPersist 回調方法。對該操作層疊到的所有實體調用該方法。在數據庫插入操作之後調用該方法。這些數據庫操作可能在調用了持久操作之後立即發生,也可能在刷新操作(可能在事務結束時發生)發生之後立即發生。PostPersist 方法中提供了生成的主鍵值。
使用 @PostPersist 批註通知任何相關對象或更新直到插入對象時纔可以訪問的信息。
此批註沒有屬性。有關更多詳細信息,請參閱 API

@PostRemove

在刪除實體後,調用該實體的 @PostRemove 回調方法。對該操作層疊到的所有實體調用該方法。在數據庫刪除操作之後調用該方法。這些數據庫操作可能在調用了刪除操作之後立即發生,也可能在刷新操作(可能在事務結束時發生)發生之後立即發生。
使用 @PostRemove 批註通知任何相關對象。
此批註沒有屬性。有關更多詳細信息,請參閱 API

@PostUpdate

在對實體數據進行了數據庫更新操作後,調用實體的 @PostUpdate 回調方法。這些數據庫操作可以在更新實體狀態時發生,也可以在將狀態刷新到數據庫(位於事務結尾)時發生。注意,究竟此回調是在持久保存實體並隨後在單個事務中修改實體時發生還是在修改了實體並隨後在單個事務中刪除實體時發生與實現相關。可移植應用程序不應依賴此行爲。
如果要在實體生命週期的該點調用自定義邏輯,請使用 @PostUpdate 批註。
此批註沒有屬性。有關更多詳細信息,請參閱 API

@PrePersist

在執行給定實體的相應 EntityManager 持久操作之前,調用該實體的 @PrePersist 回調方法。對於向其應用了合併操作並導致創建新管理的實例的實體而言,在向其複製了實體狀態後對管理的實例調用該方法。對該操作層疊到的所有實體調用該方法。
如果要在實體生命週期期間的該點調用自定義邏輯,請使用 @PrePersist 批註。
此批註沒有屬性。有關更多詳細信息,請參閱 API

@PreRemove

在針對給定實體執行相應的 EntityManager 刪除操作之前,調用該給定實體的 @PreRemove 回調方法。對該操作層疊到的所有實體調用該方法。
如果要在實體生命週期中的該點調用自定義邏輯,請使用 @PreRemove 批註。
此批註沒有屬性。有關更多詳細信息,請參閱 API

@PreUpdate

在對實體數據進行數據庫更新操作之前,調用實體的 @PreUpdate 回調方法。這些數據庫操作可以在更新實體狀態時發生,也可以在將狀態刷新到數據庫(可能位於事務結尾)時發生。請注意:此回調是否在持久保存實體並隨後在單個事務中修改該實體時發生,均依賴於實施。可移植應用程序不應依賴此行爲。
如果要在實體生命週期的該點調用自定義邏輯,請使用 @PreUpdate 批註。
此批註沒有屬性。有關更多詳細信息,請參閱 API
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章