2008-10-13 9 views
2

JPA에서 예외를 throw하는 이유는 무엇인가요?
이 동작은 EJB2에서 발견되었으며 EJB3에서 멀리 제거되었습니다.하지만 ... NoResultException을 throw하는 Query#getSingleResult()을 호출 할 때 남아 있습니다.찾을 수 없을 때 예외가 발생했습니다.

일반적으로 나는 뭔가를 찾을 수 없다는 예외가 아니길 기대합니다. 실제로 이것은 어떤 경우에는 기본 상황이 될 수도 있고 대부분의 다른 표적에서 예상되는 경우를 나타낼 수도 있습니다. 그것은 당신이 비즈니스 논리의 일부로 예외를 사용하지 말아야한다는 오래된 말을 기억하게합니다. 그러나 그것이 무엇인지, 특수한 경우에 당신은 다루기를 원하지 않거나 다루지 않으려 고합니다.

JPA에서 이렇게 구현 된 이유는 누구입니까? 무언가를 찾을 수 없을 때 null을 반환 할 때의 단점은 무엇입니까?

답변

1

getReference (class, primaryKey)를 호출 하시겠습니까? 기본 키가 존재하지 않으면 예외가 throw됩니다. null 객체를 반환하려면 find (class, primaryKey)를 대신 사용하십시오. getReference()는 게으른 로딩을 허용하지만, find()는 부작용이 있습니다. 즉, 지연 로딩을 허용하려면 실제 객체를 참조해야합니다. 즉 유효한 PK를 전달해야합니다.

관련 문제