我很抱歉,如果这是一个糟糕的问题,但我想知道POJO是否可以让getter返回JPQL查询结果? 在构造函数中进行赋值会更好吗?
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;
}
答案 0 :(得分:0)
不,一般来说,我个人认为通过getter方法进行复杂的操作并不是一个坏习惯。这与信息隐藏和复杂性隐藏有关。调用者只是调用“getThat()”,操作背后的复杂性对调用者完全隐藏。
不同的考虑因素是性能和效率。如果getter执行的操作很昂贵,您应该考虑一些优化策略。根据具体情况,您可以将结果存储在本地变量,本地数据库中,或应用其他类型的策略,以避免每次调用getter时重新计算结果。所有这些都取决于结果的含义,结果的变化速度以及应用程序获取最新值的重要性。