2017-07-03 96 views
0

對不起,如果這是一個糟糕的問題,但我想知道POJO是否可以讓getter返回JPQL查詢結果? 在構造函數中進行賦值是否更好?返回JPQL查詢結果的POJO getter?

public Long getCount() { 
Long count = 0L; 
    if (date != null) { 
     count = (Long) entityManager.createNamedQuery(query) 
       .setParameter(1, someCriteria.getId()) 
       .setParameter(2, someDate) 
       .getSingleResult(); 
    } else { 
     count = (Long) entityManager.createNamedQuery(query) 
       .setParameter(1, someCriteria.getId()) 
       .getSingleResult(); 
    } 
    return count; 
} 
+2

我認爲在你的模型中有依賴關係的存儲庫/服務通常是一個糟糕的設計。 –

回答

0

不,總的來說,我個人認爲採用getters方法進行復雜操作並不是一個錯誤的做法。這與信息隱藏和複雜隱藏有關。調用者只是調用「getThat()」,操作背後的複雜性完全隱藏給調用者。

不同的考慮因素是性能和效率。如果由getter執行的操作昂貴,則應該考慮一些優化策略。根據具體情況,您可以將結果存儲在本地變量,本地數據庫中,或者應用其他類型的策略,以避免每次調用getter時重新計算結果。全部取決於結果的含義,結果的變化速度以及應用程序獲取最新值的重要性。

+0

我並不清楚POJO的確切定義。但我期望一個名爲POJO的對象(取決於上下文)是一個簡單的業務對象。我期望在這樣一個對象中的getter可以返回其實例變量(或其派生的)中可用的值,但不會執行對持久層的調用。我將這段代碼放入數據訪問對象的finder方法中,以避免讓另一個開發人員感到意外(我認爲這是一種代碼味道)。 – sruetti