В чем разница между lazy="true"
и lazy="proxy"
в nhibernate?nhibernate ленивые варианты загрузки
ответ
lazy = "proxy" означает, что NHibernate лениво инициализирует экземпляры вашего класса; Когда NHibernate извлекает экземпляр вашего класса из базы данных, он в этом случае не вернет «реальный» экземпляр вашего класса, но скорее даст вам прокси. То есть, он вернет объект другого типа, более конкретно, объект, который является подклассом вашего класса (сгенерированный NHibernate через генерацию IL).
Объект, которому вы будете предоставлены, является прокси-сервером и единственным населенным имуществом является свойство Id. Как только вы вызываете другое свойство в экземпляре, NHibernate инициализирует прокси-сервер и извлекает из базы данных все остальные свойства/коллекции (за исключением тех, которые ленивы загружаются).
Lazy = "true" используется на другом уровне. В то время как lazy = "proxy" используется на уровне класса, lazy = "true" используется на уровне сбора. Это означает, что сбор должен быть ленивым.
documentation reference говорит о том, что значение атрибута прокси в:
lazy="proxy|no-proxy|false"
ленивых (по желанию - по умолчанию для прокси-сервера): По умолчанию, одиночные ассоциации точечные прокси-серверы.
lazy = "no-proxy" указывает, что свойство должно извлекаться лениво при первом обращении к переменной экземпляра (требуется инструментарий байт-кода времени сборки).
lazy = "false" указывает, что ассоциация всегда будет с нетерпением ожидаемой.
Не следует lazy = "proxy" указать, что свойство должно появляться лениво при первом обращении к переменной экземпляра – 2009-06-22 13:09:20
больше информации можно найти в блоге ayende: http://ayende.com/Blog/archive/2010/01/ 28/nhibernate-new-feature-no-proxy-association.aspx –
Я просто переформатировал, чтобы опции были на разностных линиях. –
По умолчанию Hibernate3 использует ленивый выбор для наборов и ленивый выбор прокси для однозначных ассоциаций. Эти значения по умолчанию имеют смысл для большинства ассоциаций в большинстве приложений.
http://docs.jboss.org/hibernate/stable/core/reference/en/html_single/#performance-fetching-lazy
Я подозреваю, еще один способ думать об этом было бы это.
class Foo
{
public virtual Bar SingleBar { get; set; }
public virtual ICollection<Bar> MultiBar { get; set; }
}
- ленивым = "прокси" относится к отдельным объектам (т.е. foo.SingleBar)
- ленивым = "истина" относится к коллекции объектов (т.е. foo.MultiBar)
(Вы не можете установить lazy = "proxy" в коллекцию, а также не можете установить lazy = "true" на одну ссылку. Любой из них заставит NH выбросить исключение XmlSchemaException, которое является немного загадочным для новичков.)
Оперативно они делают то же самое abstr act thing: когда и только когда доступ к ресурсу осуществляется, NHibernate попадает в базу данных и заполняет свойство.
Однако существует небольшая разница в реализации из-за того, что необходимо для извлечения объектов (в одном случае идентификатор ссылки (Bar) был загружен родительским объектом (Foo). В случае сбора идентификаторы неизвестны и должны быть найдены в другой таблице)
В приложении, в котором я работал, существовала разница между «прокси» и «истинным». В случае, если внешний ключ имел значение, отсутствовавшее в связанной таблице, lazy = "true" выбрал ObjectNotFoundException во время запроса Linq, тогда как lazy = "proxy" работал как ожидалось. –
- 1. NHibernate ленивые свойства поведения?
- 2. Fluent NHibernate и ленивые нагрузки
- 3. Ленивые образы загрузки iPhone
- 4. ленивые загрузки изображений в UIScrollView
- 5. Bootstrap Modal - ленивые изображения загрузки
- 6. Swing и ленивые компоненты загрузки
- 7. Ленивые страницы загрузки в PrestaShop?
- 8. Угловые 2 ленивые методы загрузки
- 9. Hibernate ленивые загрузки бросков JsonMappingException
- 10. Casting NHibernate Ленивые загруженные объекты (проблема Proxy)
- 11. NHibernate 3 ленивые свойства и нетерпеливые запросы
- 12. NHibernate - ленивые погрузки коллекции - не работает
- 13. ленивые загруженные коллекции NHibernate в ViewModels?
- 14. варианты NHibernate MappingByCode Карта Каскад
- 15. NHibernate Недвижимость-ref связанная собственность всегда ленивые грузы
- 16. Как ленивые загрузки дочерних коллекций за один шаг
- 17. Android ленивые загрузки изображений, неоднозначные точки?
- 18. Entity Framework 4 выборочно ленивые свойства загрузки
- 19. Пустые текстуры Android (ленивые текстуры загрузки)
- 20. ленивые загрузки изображений в UITableView iPhone SDK
- 21. Отношения и ленивые загрузки в SubSonic 3.0
- 22. как вы ленивые загрузки изображений в ListView
- 23. Ленивые образы загрузки в UICollectionView с SDWebImageManager
- 24. Ленивые шаблоны загрузки angularjs с помощью requirejs
- 25. Lucene - ленивые поля загрузки из документов
- 26. Ionic 2 ленивые компоненты для загрузки
- 27. Android ленивые изображения ViewFlipper
- 28. Нетти sendBufferSize receiveBufferSize варианты начальной загрузки
- 29. ленивые дополнительные вспомогательные маршруты
- 30. ActiveRecord (NHibernate) Eager Ошибка загрузки?
И в чем же отличие от ленивого = «истинного»? –
Похоже, вы не ответили на вопрос. – gdoron