내가 JPA를 통해는 EclipseLink를 사용하는 코드베이스에서 다음과 같은 패턴을 발견했다 :EclipseLink 사용과 관련된 좋은 패턴입니까?
TypedQuery query = ...
...
if(query.getResultList().size() > 0) {
return query.getSingleResult();
} else {
return null;
}
좋은 생각입니다 null을 반환 weither 여부에 대한 질문을 폐기를, 좀 더 사실에 대해 궁금하고, 그 두 비록 쿼리가이 프로젝트에서 예상되는로드가 많은 코드에서 연속적으로 발생하면 쿼리를 캐시를 사용하지 않고 데이터베이스에 대해 두 번 실행할 수 있습니다.
잘못된 건데, 두 번째 호출이 항상 캐시에 도달한다고 가정하거나, 이런 종류의 패턴을 다시 작성하여 NoResultException을 잡을 수 있다고 생각합니까?
왜 쿼리를 한 번 실행 한 다음 목록에서 첫 번째 값을 반환하지 않습니까? 캐시를 사용하면 엔티티를 다시 작성할 수 없지만 쿼리를 두 번 실행하는 것은 불필요하며 쿼리 및 옵션에 따라 데이터베이스로 이동합니다. – Chris
음,이 패턴은 NonUniqueResultException을 던질 수 있지만, 첫 번째 결과를 얻지는 않습니다. 혼자서해야합니다. 나는 나쁜 생각이라고 말하는 것이 아니며, 나는이 두 번 호출을하기보다는 명시 적으로 NoResultException을 잡을 것이라고 말하고있다. – gizmo