有開發人員撰寫的本機查詢
String sql = "Select * from TERP_META where id=" id " and type='KCH' ORDER BY ID ASC";
return entityManagerMaster.createNativeQuery(sql, TerpStatus.class).getResultList();
我們還可以為 thist 撰寫命名查詢。
現在對于簡單的查詢,我們應該使用 Native 還是 Named?我知道 Native 應該用于復雜的查詢和簡單的 Named 用于但不知道原因。
任何人都可以澄清兩者的執行在技術上有何區別,以便在兩者中選擇最佳?
uj5u.com熱心網友回復:
它根本不是命名與原生的,因為您可以命名原生查詢。本機是 SQL 查詢,而非本機,在 JPA 世界中,指的是使用 JPQL——一種基于 Java 物體的不同查詢語言。您選擇哪個取決于您的應用程式要求,因為通常只能通過資料庫特定(本機)SQL 訪問更多特定于資料庫的功能。
我個人不喜歡搜索 SQL 查詢以在整個應用程式代碼中找到它們,并在以影響模式的方式更改模型時找出問題 - 使用 JPQL 可以讓 JPA 預先針對模型驗證查詢,而不必執行針對資料庫的 SQL 查詢。而且我合作過的開發人員并不總是理解或使用 SQL 表,因此 JPQL 更接近于他們使用的格式(java 物件)中的資料。它還減少了人們使用字串 concat 來構建 SQL 查詢的問題/風險,并在該查詢字串中使用一些客戶定義的值 - SQL 注入攻擊的常見向量。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/467440.html
上一篇:HQL中的路徑無效和奇怪的替換
