Создать абстрактный суперкласс, от которого наследуют все свои свойства объекты, предназначенные для постоянного хранения. Обычно в нём определяются атрибуты для обеспечения постоянного хранения, уникальный идентификатор объекта, методы сохранения в БД.
41. Шаблоны взаимодействия с базой данных. Каркас взаимодействия с БД на основе брокера. Ключевые идеи: соответствие, идентичность, брокер, материализация и дематериализация, буферизация объектов.
В о-о технологии проектирования шаблоном называют описание проблемы и её решения, которые можно применить при разработке различных систем. В идеале, шаблон должен содержать советы по поводу его применения в различных ситуациях, а также описание его преимуществ и недостатков. Шаблон — это именованная пара "проблема/решение", содержащая рекомендации для применения в конкретных ситуациях, которую можно использовать в различных контекстах. Шаблоны призваны систематизировать существующие знания и принципы. В идеале, всем шаблонам должны быть присвоены осмысленные имена. Если шаблон имеет имя, то его легко обсуждать с другими разработчиками.
Ключевые идеи:
- Соответствие. М/у классом и его представлением на постоянном носителе должно существовать соответствие (например, таблица в БД). Поля записи соответствуют атрибутам.
- Идентичность.Требуется разработать способ связи объектов с записями, а также гарантировать, что многократная материализация не приведёт к дублированию объектов. Можно использовать т.н. UUID (Universe Unique IDentifier)
- Брокеры (шаблон Template Method).Кто должен отвечать за материализацию и дематериализацию объектов?
Согласно шаблону Database Broker создаётся класс, отвечающий за материализацию, дематериализацию и кэширование объектов. Для каждого класса объектов, подлежащих хранению в БД, определяется отдельный класс-брокер.
- Материализация и дематериализация.Материализация – это действие по преобразованию необъектного представления данных в объектное. Дематериализация – обратное действие.
- Буферизированные объекты (шаблон Cache Management).С целью повышения производительности системы материализованные объекты желательно хранить в локальном буфере. Если для каждого класса объектов используется отдельный брокер, то этот брокер поддерживает буферизацию своих объектов.
После материализации объекты помещаются в буфер, а в качестве ключа используется их идентификатор. При запросе к брокеру на определённый объект брокер сначала выполняет поиск в буфере, что позволяет избежать дополнительных операций материализации.