ORM World является мощным и полнофункциональным, я думаю, что сегодня препятствиями являются сами люди, это говорит о том, что использование ORM требует учета изменений в способах мышления приложений, архитектур и шаблонов.
Чтобы ответить на ваши вопросы:
Выполнение запроса зависит от большего количества факторов, можно полностью настроить движок/среду, чтобы воспользоваться преимуществами различных функций, таких как отложенное выполнение, будущие запросы (запросы, выполняемые в будущем), несколько запросов и, что не менее важно, управление сеансом включает в себя в этом районе:
Отложенное выполнение основано на таких концепциях, как отложенная загрузка и отложенное выполнение. Это означает, что запросы к базе данных выполняются только тогда, когда вы выполняете некоторые действия, такие как доступ к методам сеанса NHibernate, таким как ToList(), другим примером отложенного выполнения является использование LinqToNhibernate, когда только при доступе к определенным объектам выполняются запросы.
Будущие запросы, как я уже сказал, выполняются в будущем, Айенде хорошо говорит об этом.
Множественные запросы — это запросы, которые можно «упаковать» вместе и выполнить за один раз, избегая многократных обращений к БД, и это может быть очень полезной функцией.
Управление сессиями, это еще одна глава, о которой стоит упомянуть... но имейте в виду, что если вы хорошо управляете своей сессией, или, что еще лучше, позволяете движку NHibernate хорошо управлять сессией, иногда нет необходимости обращаться к DN для получения данных.
во всех случаях такие инструменты, как NHibernate, генерируют запросы для вас, а параметризованные запросы хорошо управляются параметрами, даже в зависимости от базового механизма БД и, соответственно, выбранного вами диалекта БД!
Понятно, что такие фреймворки, как NHibernate, большую часть времени используют отражение во время выполнения, но необходимо упомянуть, что используется множественная оптимизация отражения, см., например, Динамические прокси... Понятно, что когда-нибудь или возможно, все время прямой код мог бы быть быстрее, но только в единице, в целом это может привести к большему количеству ошибок и узких мест.
Говоря о NHibernate, или, лучше сказать, полезно понимать, что вы имеете в виду, когда говорите о временных таблицах и временных данных. Насколько я знаю, NHibernate изначально не поддерживает временные таблицы в смысле таблиц времени выполнения. , но это можно сделать, потому что NHibernate позволяет создавать сопоставление объектов во время выполнения, поэтому механизм временных данных может быть реализован с использованием этого API.
Надеюсь, я дал полезный ответ! ...и ой, извините за мой плохой английский!
person
Hoghweed
schedule
20.03.2009