有人告訴我,hibernate查詢的標準是,即使回傳值是一個List,也要用Optional來包裝每個物件,就像這樣--
List<Optional<XEntity>>findAllByStatus(String status)。
單個物件用Optional來包裝是完全合理的,但當它是一個物件的串列時,我不明白其中的道理(自定義findAll()的例外)。如果有一個空物件,那么它就不會被查詢選中,如果沒有物件對應于查詢,那么就會回傳一個空的List。為每個專案添加一個Optional似乎很麻煩而且沒有必要。
有幾個人告訴我,在List中使用Optional是一種最佳做法,但是沒有人給我一個充分的解釋,我也無法通過Google找到一個解釋,而且我在試驗時還沒有遇到問題
List<XEntity> findAllByStatus(String status)。
uj5u.com熱心網友回復:
我同意你的觀點,對于單個物件來說,用Optional包裝是個不錯的選擇,但對于List、Set等集合來說,我覺得這不是個好選擇。特別是當你的API要確保每次都回傳一個集合物件(List物件或空List)時。因為findAllByStatus(String status)確保它將回傳物件或沒有物件,在這種情況下,框架將確保回傳空List。 正如您所提到的,在串列中用Optional包裹每個物件,只有當串列中的任何一個物件為Null時才有用。
我沒有看到任何關于List findAllByStatus(String status);的問題,但我看到有人使用了Optional<List>,這很危險,會注入運行時間例外。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/321085.html
標籤:
上一篇:JavaSQLDriverManager無法定位mariadb驅動(IntelliJIDEA)。
下一篇:在java執行緒中的不一致
