級聯操作的四種類型詳解

前言:使用JPA,創建一對多雙向關聯實體對象時,需要給一對多的關聯指定級聯操作。

級聯操作有四種類型:級聯更新(合併),級聯保存,級聯刷新,和級聯刪除。

詳情:現在我們分別介紹以上四種級聯類型的詳細情況。

1.CascadeType.REFRESH 級聯刷新(使用場景,當我們從數據庫中請求了一條數據,在我們對這條數據進行業務處理的時候,另一個用戶可能會修改數據庫中的這條數據的記錄,那麼此時我們就需要進行級聯刷新了,否則我們處理的數據就失去了意義。)

2.CascadeType.PERSIST 級聯持久化(比如在發出保存訂單操作時,會同時發出保存訂單項的操作語句)   *訂單和訂單項之間是一對多的關係。

3.CascadeType.MERGE 級聯合並 也就是級聯更新(當處於遊離狀態下的對象被修改了,那麼與他相關聯的實體中的對象也會執行修改,如果開啓了級聯更新,那麼此實體對象的更新會波及到與其關聯的實體對象)

4.CascadeType.REMOVE 級聯刪除 (比如:如果設置了級聯刪除,當刪除訂單時,會同時刪除對應的訂單項,但是需要注意此操作的先後順序爲先刪除訂單項,再刪除訂單)

注:即使我們定義了級聯操作,也只有在我們使用EntityManage 對象的api方法時纔會生效。比如說當我們調用了refresh();方法時,級聯刷新纔會生效。當調用了remove()方法時,級聯刪除纔會生效。而使用HQL語句進行刪除,則不會觸發級聯刪除操作。

好了,對於級聯操作的四種類型就介紹完了,在我們的項目中需要根據具體的業務需求合理應用級聯操作。

             

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章