Re[2]: ORM way & Problems
От: Sergey T. Украина http://overstore.codeplex.com
Дата: 28.05.09 12:30
Оценка: 17 (4)
Почему появляется необходимость в контексте? И когда она появляется? Появляется она тогда, когда теряется совершенство мира, то есть самодостаточность полученных из датаридера данных. Счастливые пользователи raw db data знают: то, что они извлекают из ридера — это тот минимум, и одновременно максимум, нужный именно сейчас, прямо после вызова. Пользователи ОРМ часто проектируют модель "наперед". Что значит: а) вводят везде где ни попадя навигационный доступ и б) злоупотребляют иерархичностью. Что, кстати, ни в коей мере не является проблемой ОРМ, а является проблемой проектирования модели предметной области. Теперь уже данные, полученные с таким трудом из базы не являются самодостаточными для восстановления объекта по ним. Теперь нам еще нужно восстановить ссылки (хотя из базы приходят только ключи), и агрегированные внутрь коллекции объектов. Почему это плохо? Потому что СУБД "быстрая внутри, и медленная снаружи". То есть быстрее получить за раз 100 записей, чем 10 раз по 10 записей.

И для того, чтобы восстановить дополнительные данные, ОРМ-у приходится дробить запросы. И если с ссылками можно было бы выкрутиться при помощи JOIN-ов, то с иерархиями совсем туго. И пресловутый идентити маппинг и тут вмешивается — в зависимости от сценария использования, иногда выгоднее получать ссылки JOIN-ом, иногда — отдельным запросом.
There is no such thing as the perfect design.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.