242
Как избежать подводных камней объектно-реляционного отображения
ли – уникальная особенность подхода NORM, которая делает отображение
сим метричным
. Мы не пытаемся построить модель базы данных на основе
модели приложения, как не настаиваем и на том, чтобы объекты базы дан-
ных создавались первыми. Вместо этого мы призываем заключить
контракт
между уровнем приложения и базой данных, в том же смысле, в котором
REST является контрактом для веб-служб. Контракт, или транспортная мо-
дель, представляет собой объект JSON. Контракт позволяет упростить долго-
временное хранение объектов путем их сериализации в объекты JSON, с ко-
торыми умеет работать база данных.
Таким образом, для сохранения объекта любой структуры и любой слож-
ности требуется только одно обращение к базе данных.
Аналогично, при извлечении из базы данных приложение может десериа-
лизовать полученный объект в свою модель, и для этого требуется только
один вызов. Приложение может также передавать параметры, определенные
как часть контракта, чтобы сообщить базе данных, что ему нужны дополни-
тельные части модели, как в запросах веб-служб OData.
Разработчикам приложений нравится упрощенная реализация уровня
доступа к данным на стороне приложения. NORM использует контракт для
определения входных и выходных данных каждого вызова базы данных.
Это позволяет разработчикам приложений писать код, соответствующий
контракту, и легко имитировать любые зависимости при тестировании, по-
скольку вызовы базы данных и полученный результат должны соответство-
вать контракту. Таким образом, после заключения контракта разработчики
баз данных и приложений могут выполнять свои части работы одновремен-
но и независимо друг от друга. Более того, разные группы разработчиков
приложений могут использовать один и тот же контракт для разных про-
ектов.
Что касается приложений, то все современные объектно-ориентирован-
ные языки имеют библиотеки для сериализации и десериализации объектов.
При каждом новом взаимодействии с базой данных для реализации можно
повторно использовать один и тот же шаблон.
Это позволяет разработчикам приложений тратить больше времени на
проектирование структуры JSON, чтобы обеспечить ее соответствие текущим
и будущим потребностям бизнеса. Повторное использование одного и того
же шаблона взаимодействий также сокращает время реализации, уменьшает
вероятность ошибок и позволяет минимальными изменениями кода повли-
ять на всю реализацию доступа к базе данных.
Do'stlaringiz bilan baham: