0
我已經找到了一個代碼庫下面的模式,通過JPA將EclipseLink:這是一個關於EclipseLink使用情況的好模式嗎?
TypedQuery query = ...
...
if(query.getResultList().size() > 0) {
return query.getSingleResult();
} else {
return null;
}
丟棄約weither或沒有返回null是一個好主意的問題,我更想知道的事實是,雖然兩查詢在代碼中是連續的,在負載較重的情況下(這是本項目的預期),查詢可能會針對數據庫觸發兩次,而不是使用緩存。
我錯了嗎?我可以安全地假設第二個調用將總是碰到緩存,或者是否應該修改這種模式以便捕獲NoResultException?
爲什麼不只是執行一次查詢,然後從列表中返回第一個值?緩存可能會阻止重建實體,但執行查詢兩次是不必要的,根據查詢和您的選項,將會轉到數據庫。 – Chris 2014-10-16 13:06:54
好吧,這種模式可能會拋出一個NonUniqueResultException,而抓住第一個結果不會,你必須自己去做。我並不是說這是一個糟糕的主意,我只是說我寧願明確地抓住NoResultException,而不是做這個雙重調用。 – gizmo 2014-10-16 13:09:59