2015-07-30 3 views
1

У меня есть базовое понимание обоих методов, но у меня мало проблем для метода Load(): 1. Если класс является окончательным или конструктор по умолчанию не предусмотрен, в этом случае загрузка всегда будет базы данных или ошибки броска, поскольку он не может создать прокси-класс? 2. Если объект найден в кеше первого или второго уровня, он вернет полный объект или прокси-объект?Hibernate Метод получения и загрузки

Для метода Get 1. Если он находит объект в кеше, он не попадет в базу данных?

ответ

1

Согласно моему пониманию,

Load попадает в кэш и Получить также пытается попасть в кэш.

Если Нагрузка получает объект в кеше, он возвращается, if not, it returns just a proxy object with the given identifier set.

Получить, получает объект из кэша он возвращает, if not, it goes to DB and returns the found object, if not present returns null.

Упакуйте нагрузки, если он возвращает объект прокси, он бросает org.hibernate.ObjectNotFoundException при сохранении/обновления объекта, когда идентификатор объекта запрашивал нет в базе данных.

Так что в основном используйте Load, когда вы уверены, что у вас есть объект с запрошенным идентификатором в базе данных, его использование должно быть там, где нам просто нужно обновить несколько атрибутов.

+0

и что происходит, если класс является окончательным –

 Смежные вопросы

  • Нет связанных вопросов^_^