Будьте в спящем режиме: Различие между session.get и session.load

Если ваш проект основан на Maven, вы можете запустить все тестовые методы из тестового класса CustomTest, который принадлежит модулю 'my-module', используя следующую команду:

mvn clean test -pl :my-module -Dtest=CustomTest

Или запустить только 1 тест -method myMethod из тестового класса CustomTest, используя следующую команду:

mvn clean test -pl :my-module -Dtest=CustomTest#myMethod

Для этой способности вам нужен Maven Surefire Plugin v.2.7.3 + и Junit 4. Подробнее здесь: http: //maven.apache.org/surefire/maven-surefire-plugin/examples/single-test.html

87
задан tomato 4 March 2009 в 01:36
поделиться

2 ответа

От эти В спящем режиме форум :

Это из книги В спящем режиме в Действии. Хороший считал это..

<час>

объекты Получения идентификатором следующее В спящем режиме, фрагмент кода получает Пользовательский объект от базы данных:

User user = (User) session.get(User.class, userID);

получение () метод является специальным, потому что идентификатор однозначно определяет единственный экземпляр класса. Следовательно it’s, характерный для приложений для использования идентификатора в качестве удобного дескриптора к постоянному объекту. Извлечение идентификатором может использовать кэш при получении объекта, предотвращении хита базы данных, если объект уже кэшируется. Будьте в спящем режиме также обеспечивает загрузку () метод:

User user = (User) session.load(User.class, userID);

загрузка () метод является более старым; доберитесь (), был добавлен к API Hibernate’s из-за пользовательского запроса. Различие тривиально:

, Если загрузка () can’t находит объект в кэше или базе данных, исключение выдается. Загрузка () метод никогда не возвращает пустой указатель. Получение () метод возвращает пустой указатель если объект can’t быть найденным.

загрузка () метод может возвратить прокси вместо реального персистентного экземпляра. Прокси является заполнителем, который инициировал загрузку реального объекта, когда it’s получил доступ впервые; С другой стороны, доберитесь (), никогда не возвращает прокси. Выбор между добирается (), и загрузка () легка: Если бы you’re бесспорный постоянный объект существует, и несуществование считали бы исключительным, загрузка () является хорошим вариантом. Если Вы aren’t бесспорный существуете персистентный экземпляр с данным идентификатором, использование получают () и тестируют возвращаемое значение, чтобы видеть если it’s пустой указатель. Используя загрузку () имеет дальнейшую импликацию: приложение может получить действительную ссылку (прокси) к персистентному экземпляру, не поражая базу данных для получения ее постоянного состояния. Таким образом, загрузка () не могла бы выдать исключение, когда она doesn’t находит постоянный объект в кэше или базе данных; исключение было бы выдано позже, когда к прокси получают доступ. Конечно, получая объект идентификатором isn’t столь же гибкий как использование произвольных запросов.

116
ответ дан Nandkumar Tekale 5 November 2019 в 15:29
поделиться

Ну, в nhibernate, по крайней мере, сессии. Доберитесь (идентификатор) загрузит объект из базы данных, в то время как сессия. Загрузка (идентификатор) только создает объект прокси к нему, не оставляя Ваш сервер. Работы точно так же, как любое лениво загруженное свойство в Вашем POCOs (или POJOs:). Можно тогда использовать этот прокси в качестве ссылки на сам объект для создания отношений, и т.д.

Думают о нем как наличие объекта, который только сохраняет идентификатор, и это загрузит остальных, если Вам когда-либо будет нужен он. Если Вы просто раздаете его для создания отношений (как FKs), идентификатор - все, в чем Вы будете когда-либо нуждаться.

15
ответ дан Jorge Alves 5 November 2019 в 15:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: