2012-06-13 2 views
1

loadget 메서드가 최대 절전 모드에서 Session의 차이점은 무엇입니까?최대 절전 모드 : 최대 절전 모드에서 절전 모드에서 Session.load 메서드가 존재하는 이유

일치하는 데이터베이스 행이 없으면 load()가 복구 할 수없는 예외를 throw합니다.

과 일치하는 데이터베이스가없는 경우 get()은 null을 반환합니다.

왜 Hibernate Creators는 API에서이 메소드로드를 유지 했습니까? (Object가 발견되지 않으면 복구 할 수없는 예외가 발생합니다.) get() 충분하지 않습니까?

+0

복구 할 수 없다는 것은 무엇을 의미합니까? 로드는 단순히 예외를 throw하지만 여전히 catch 할 수 있습니다. – beny23

+0

복구 할 수없는 것은로드가 존재하지 않는 것이 심각한 오류 일 때 사용되어야한다는 사실을 의미합니다 (인스턴스가 존재한다는 것을 알 때로드 사용). 즉, 예외를 잡아서 존재를 확인하는 데 익숙하지 않아야한다. –

답변

1

엔터티를 찾을 수없는 경우 예외와 null이 반환된다는 것 이상이 있습니다.

로드는 엔티티의 영구 인스턴스 대신 프록시를 반환 할 수도 있습니다. 그런 다음이 프록시는 속성에 처음 액세스 할 때이 엔터티의 로딩을 트리거합니다.

이것은 최대 절전 모드 포럼 here에서 이전에 SO here과 많은 다른 장소에서 논의되었습니다.

+0

Alex에게 감사드립니다. 첫 번째 링크는 매우 좋았습니다. 나는 여전히 하나의 질문을 여기까지, 내 ​​이해까지,로드 및 얻을 캐시에서 처음 개체를 얻으려고하면, 다음 데이터베이스에 히트 만 발견된다 ?? 내가 틀렸다면 나를 바로 잡아주세요. – Pawan

+0

맞습니다. 두 가지 방법 모두 데이터베이스로 가기 전에 첫 번째 및 두 번째 레벨 캐시에 도달합니다. –