MyObject myObject = session.get(MyObject.class, identifier);
Взятые из другого поста, курсив мой.
Метод get() является особым, поскольку идентификатор однозначно идентифицирует один экземпляр класса. Поэтому для приложений обычно использовать идентификатор как удобный дескриптор для постоянного объекта. Поиск по идентификатору может использовать кеш при извлечении объекта, , избегая попадания базы данных, если объект уже кэширован.
Если вы хотите сделать выбор массы/критерий вместо выбора одной записи, вам необходимо зафиксировать объекты перед выполнением запроса. Невозможно смешивать и сопоставлять объекты из кэша и базы данных с запросом.
http://stackoverflow.com/questions/5370482/whats-the-advantage-of-load-vs-get-in-hibernate –