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