當我們試圖從資料庫中查詢某個欄位的絕對值時,我們有兩種途徑。第一種是自定新的 Hibernate UserType ,再透過 HQL 查詢。
第二種則是利用 SQL abs()
函數,透過 SQL 查詢。
自定新的 Hibernate UserType 並不太難,僅需實作 UserType 介面,再套用一個範例來修改即可。
範例可參考 https://www.hibernate.org/388.html 。
Implements Hibernate's UserType to define a custom class for absolute integer.
Use this user type in Hibernate Mapping (HBM).
HQL Query
然而,透過 Hibernate 的 UserType 途徑取得欄位的絕對值之效能,遠遜於透過 SQL 的 abs()
函數。
查詢結果集的內容愈多,則效能差異愈顯著。
如果你採用 SQL 方式取欄位的絕對值,則你不必定義新的 UserType 與 HBM。
樂多舊網址: http://blog.roodo.com/rocksaying/archives/11126093.html