주요 차이점은 하중 지연 여부입니다.
로드 메소드는 데이터베이스에 즉시 액세스하지 않으며 레코드가로드를 시도하지 않으면로드 메소드는 초기화되지 않은 프록시 객체를 반환합니다.
방법을 얻으십시오
항상 데이터베이스에 즉시 액세스하십시오. 레코드가로드를 시도하지 않으면 Null을 직접 반환하십시오.
최대 절전 모드에는 매우 유사한 두 가지 방법이 있습니다. 그것을 검토 한 후, 나는 발견했다
최대 절전 모드에는 get () 및 load ()에는 두 가지 매우 유사한 방법이 있습니다. 둘 다 지정된 엔티티 클래스를 통해 데이터베이스의 데이터를 읽고 ID를 읽고 해당 인스턴스를 반환 할 수 있습니다. 그러나 최대 절전 모드는 정확히 동일한 방법을 수행하지 않습니다. 그들 사이의 차이점은 다음과 같습니다.
GET은 데이터베이스를 직접 쿼리하는 것입니다. 찾을 수 없다면 NULL을 반환합니다. 하중이 먼저 메모리에서로드됩니다. 이전에로드하거나 쿼리되지 않은 경우 데이터베이스를 쿼리하십시오.
Hibernate의 Get 메소드와로드 방법의 근본적인 차이점은로드 메소드를 사용하는 경우 Hibernate는 ID에 해당하는 객체 (데이터베이스 레코드)가 데이터베이스에 존재해야하므로 신뢰와 함께 사용될 수 있으며 대중을 사용하여 객체로드를 지연시킬 수 있다는 것입니다. 데이터베이스는 객체의 다른 속성 데이터가 사용될 때만 쿼리되지만 데이터베이스에 레코드가 존재하지 않으면 방법이 없으며 예외 만 던질 수 있습니다. 로드 메소드는 예외를 던지면 객체의 데이터를 사용할 때이 객체를 만들 때보다 데이터베이스에 데이터가 존재하지 않을 때 예외가 발생한다는 것을 의미합니다. 세션의 캐시는 최대 절전 모드에 대한 매우 저렴한 자원이므로로드시 먼저 세션 캐시를 확인하여 ID에 해당하는 객체가 있는지 확인합니다. 존재하지 않으면 프록시가 생성됩니다. 따라서 ID에 데이터베이스에 해당 레코드가 있어야한다는 것을 알고 있으면로드 방법을 사용하여 게으른 하중을 달성 할 수 있습니다. Get 메소드의 경우 최대 절전 모드는 ID에 해당하는 데이터가 존재하는지 확인합니다. 먼저 세션 캐시를 찾은 다음 보조 캐시를 찾아보십시오. 아직 완료되지 않은 경우 데이터베이스를 찾아보고 데이터베이스에서 수행되지 않은 경우 NULL을 반환하십시오.
2. Get 메소드는 먼저 세션 캐시를 쿼리합니다. 그렇지 않은 경우 보조 캐시를 쿼리하고 마지막으로 데이터베이스를 쿼리합니다. 반대로로드 메소드가 생성되면 세션 캐시가 첫 번째 쿼리이며 에이전트가 생성되지 않으면 보조 캐시와 데이터베이스는 실제로 데이터를 사용하는 경우에만 쿼리됩니다.
요컨대, Get과 Load의 근본적인 차이에 대해서는 한 단어에서 데이터가 데이터베이스에로드 방법을 위해 데이터베이스에 존재해야하며 프록시를 사용하여 신뢰도로로드를 지연시킬 수 있습니다. 사용 중에 문제가 발견되면 예외 만 던질 수 있습니다. Get 메소드의 경우 최대 절전 모드는 실제 데이터를 얻어야합니다. 그렇지 않으면 NULL을 반환합니다.
1. 기준을 충족하는 레코드가 발견되지 않으면 get () 메소드가 NULL을 반환합니다. Load ()는 ObjectNotFoundEcception을보고합니다.
2. load () 메소드는 엔티티의 프록시 클래스 인스턴스를 반환 할 수 있지만 get ()는 항상 엔티티 클래스 만 반환합니다.
3. load () 메소드는 보조 캐시와 내부 캐시에서 기존 데이터를 최대한 활용할 수 있으며 get () 메소드는 내부 캐시에서만 검색 할 수 있습니다. 해당 데이터가 발견되지 않으면 보조 캐시가 건너 뜁니다. 검색을 완료하기 위해 SQL이 직접 호출됩니다.