Z forum Hibernate :
To z książki Hibernate in Action. Dobrze, przeczytaj to ..
Pobieranie obiektów według identyfikatora Poniższy fragment kodu Hibernate pobiera obiekt użytkownika z bazy danych:
User user = (User) session.get(User.class, userID);
Metoda get () jest wyjątkowa, ponieważ identyfikator jednoznacznie identyfikuje pojedyncze wystąpienie klasy. Dlatego często aplikacje używają identyfikatora jako wygodnego uchwytu do trwałego obiektu. Pobieranie według identyfikatora może używać pamięci podręcznej podczas pobierania obiektu, unikając trafienia w bazę danych, jeśli obiekt jest już buforowany. Hibernate udostępnia również metodę load ():
User user = (User) session.load(User.class, userID);
Metoda load () jest starsza; get () zostało dodane do API Hibernate na żądanie użytkownika. Różnica jest banalna:
Jeśli load () nie może znaleźć obiektu w pamięci podręcznej lub bazie danych, zgłaszany jest wyjątek. Metoda load () nigdy nie zwraca wartości null. Metoda get () zwraca wartość null, jeśli nie można znaleźć obiektu.
Metoda load () może zwrócić serwer proxy zamiast rzeczywistej trwałej instancji. Proxy to symbol zastępczy, który uruchamia ładowanie rzeczywistego obiektu przy pierwszym dostępie do niego; Z drugiej strony get () nigdy nie zwraca serwera proxy. Wybór między get () i load () jest łatwy: jeśli masz pewność, że trwały obiekt istnieje, a nieistnienie zostanie uznane za wyjątkowe, load () jest dobrą opcją. Jeśli nie jesteś pewien, czy istnieje trwała instancja o podanym identyfikatorze, użyj funkcji get () i przetestuj zwracaną wartość, aby sprawdzić, czy jest pusta. Użycie metody load () ma dalsze konsekwencje: aplikacja może pobrać poprawne odwołanie (proxy) do trwałej instancji bez uderzania w bazę danych w celu pobrania jej trwałego stanu. Więc load () może nie zgłosić wyjątku, jeśli nie znajdzie trwałego obiektu w pamięci podręcznej lub bazie danych; wyjątek zostanie zgłoszony później, podczas uzyskiwania dostępu do serwera proxy. Oczywiście pobieranie obiektu według identyfikatora nie jest tak elastyczne, jak używanie dowolnych zapytań.