[英]Does having a custom update query with WHERE clause gives more performance while updating in Spring Data JPA?
假設我有一個名為 Car 的實體。 現在實體的主鍵不是自動生成的 Id。 假設我需要用一組值更新我的汽車實體。但問題是我需要確保給定的 ID 已經存在於數據庫中。 因為我知道在 spring 數據 JPA 中,我們使用save()
方法來保存和更新現有實體。
然后,在為save()
方法插入新主鍵的情況下,將導致保存,否則它將更新該特定實體。因此,我始終需要確保在更新期間該方法不會為無效 ID 創建新實體。
因此,為了克服這個問題,我看到許多開發人員在更新之前使用find()
方法調用來確保給定的主鍵已經存在。但是您可以看到會有額外的數據庫命中來確保這一點。
因此,為了克服這個問題,我想到了使用自定義更新查詢。然后我可以通過在 JPARepository 中將它的返回類型聲明為 int 來確定查詢是否被執行。 所以根據我的知識查詢將 output 1 表示成功,0 表示更新失敗。
所以我需要知道的是,在為方法updateCar()
提供不存在的主鍵的情況下,我是否可以始終確保更新不會因為主鍵無效而成功。 我的意思是如果更新由於不同的錯誤而失敗會發生什么?
本次討論的最終目的是避免在更新前檢查主鍵是否存在。 所以如果有更好的方法請state吧。
前任:
@Modifying
@Query("UPDATE Car c SET c.status =:status WHERE c.id =:id")
int updateCar(@Param("status") String status, @Param("id") String id);
您從更新中返回的 int 是更新的行數。
所以我需要知道的是,在為方法 updateCar() 提供不存在的主鍵的情況下,我是否可以始終確保更新不會因為主鍵無效而成功。 我的意思是如果更新由於不同的錯誤而失敗會發生什么?
如果由於任何其他原因更新失敗,那么您將收到異常。
您的解決方案的問題是您必須為每個用例編寫更新語句。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.