Классика баз данных - статьи

       

у каждого экземпляра этого класса


Хотя метод «isThisAnAcceptableSpouse», очевидно, относится к классу Person ( у каждого экземпляра этого класса может иметься собственный критерий, по которому оценивается приемлемость другого экземпляра – он может быть блондином, брюнетом, рыжим, зарабатывать больше 100000 долларов в год и т.д.), непонятно, можно ли выполнять этот метод в языке запросов, и должна ли существовать такая возможность. Даже в наиболее тривиальных реализациях производительности может быть нанесен серьезный урон, в особенности, если слой ОР-отображения должен для выполнения запроса преобразовывать данные реляционных столбцов в объекты. Кроме того, отсутствует гарантия того, что разработчик напишет этот метод полностью эффективно, и нет никакого способа заставить его выполнить эффективную реализацию.

(Критики могут возразить, что это решаемая проблема, и предложить два возможных решения. Одно из них состоит в том, чтобы поместить данные о предпочтениях в отдельную таблицу и включить эту таблицу в запрос. Однако это приведет к ужасно сложному запросу, текст которого займет несколько страниц, и при потребности добавления нового критерия предпочтения для распутывания этого запроса придется привлекать эксперта по SQL. Другим решения является размещение реализации «приемлемости» в хранимой процедуре базы данных. Тогда соответствующий код будет полностью удален из объектной модели, что оставит разработчиков вообще без объектного решения. Это решение допустимо, но только если принять допущение, что в объектной модели может присутствовать не вся реализация. Но это противоречит исходному условию «объекты и ничего, кроме объектов», на котором многие защитники ОР-отображения основывают свои доводы.)


Содержание  Назад  Вперед