Одной из наиболее важных причин успеха реляционной базы данных является существование SQL, который является стандартным языком для взаимодействия с базами данных.
1. Архитектурный узор:
Как управлять логикой домена для доступа к данным:
Операторы SQL встроены в языки программирования.
Ввод данных в строке, ввод данных в таблице:
Отделяя доступ SQL от логики домена и разделяя его на отдельные классы (которые основаны на структуре таблиц в базе данных, и каждая таблица данных соответствует классу), эти классы создают запись для базы данных.
Записи о деятельности:
Когда модель домена проста, каждый объект домена отвечает за процесс доступа к таблицам, соответствующим базе данных.
Устройство отображения данных:
Когда модель домена является сложной, она обрабатывает все операции доступа между базой данных и моделью домена и позволяет обеим сторонам изменяться независимо.
Объектно-ориентированная база данных:
Модели предметной области можно использовать независимо от того, насколько они сложны (из-за риска они используются нечасто). Главное преимущество-это повышение производительности!
2. Поведенческие проблемы:
1) Так называемая проблема формулировки заключается в том, как заставить объект считываться из базы данных и храниться в базе данных.
2) Единица работы:
Действуя в качестве контроллера отображения базы данных, он отслеживает все объекты, считанные из базы данных, и все объекты, измененные в любой форме, и отправляет обновления в базу данных (для решения проблемы синхронизации между объектами памяти и данными в базе данных).
3) Сопоставление личности:
Запишите каждую строку, прочитанную на карте идентификации, чтобы предотвратить повторную загрузку одного и того же объекта
4) Задержка загрузки:
Уменьшайте количество данных, считываемых моделями предметной области каждый раз
3. Считывание данных:
1) Искатель:
При чтении данных вы можете думать о методе чтения данных как о поиске.
2) Объект поиска:
Если класс взаимодействия с базой данных основан на таблицах, операции вставки и обновления также привязаны к методу finder.
Если база данных взаимодействует с классами на основе строк, создайте отдельные объекты finder (каждый класс finder имеет множество методов, инкапсулирующих инструкции SQL, и при запросе объект finder возвращает соответствующий набор объектов на основе строк)
3) Эмпирические правила производительности считывания данных:
При необходимости попробуйте прочитать несколько строк одновременно.
Если вам нужны данные нескольких таблиц, используйте Join
4. Структурные схемы отображения:
1) Отображение взаимосвязей:
Способ разрешения взаимосвязи между реляционными таблицами и ссылочной связью между объектами:
Реляционные свойства каждого объекта поддерживаются полем идентификатора в объекте, а сопоставление между ссылками на объект и реляционными ключами поддерживается путем нахождения этих значений.
Для некоторых объектов с небольшими значениями (таких как диапазон дат и деньги) нет необходимости использовать поля идентификаторов для преобразования ссылок между объектами во внешние ключи (которые не следует описывать как собственные таблицы в базе данных), но для удаления всех полей в объектах значений и встраивания их в связанные объекты путем встраивания значений.
Вы также можете сохранить набор объектов в виде одного столбца в таблице путем сериализации полей
2) Наследование:
Наследование одной формы:
Создайте таблицу для всех классов в иерархии системы наследования (ее легко изменить и избежать объединения, но каждая строка должна занимать место для шести столбцов каждого возможного подкласса Boa)
Специфическое наследование таблиц:
Создайте таблицу для каждого конкретного класса в иерархии системы наследования (избегая операций объединения, позволяя извлекать объект из таблицы, но его трудно изменить, например, при любом изменении суперкласса придется изменить все таблицы и коды сопоставления).
Наследование таблицы классов:
Создайте таблицу для каждого класса в иерархии наследования (для загрузки объекта требуется несколько операций объединения, обычно это приводит к потере производительности).
Вышеупомянутые три шаблона должны учитывать их собственную среду и предпочтения (Мартин, как правило, использует наследование одной формы и два других шаблона, чтобы помочь решить неизбежные неуместные и бесполезные проблемы с колонками).
5. Картографирование:
Выберите свое собственное решение для базы данных:
Использование классической технологии проектирования баз данных для создания таблиц вокруг данных, использование ввода данных строк или ввода данных таблиц для удаления SQL из логики домена
Использование существующих схем баз данных:
Простая логика домена может создавать классы ввода данных строк или таблиц для имитации баз данных и создания логики домена поверх них. Комплексное пошаговое моделирование предметной области с помощью картографов данных
Для нескольких источников данных:
Создайте несколько слоев отображения, по одному для каждого источника данных. Если данные очень похожи, данные могут быть преобразованы из схемы памяти в схему логического хранения данных и сопоставлены со схемой логического хранения данных в фактическую схему физического хранения (часть 2 содержит различия).
6. Использование метаданных:
Сопоставление метаданных основано на методе концентрации сопоставления в файлах метаданных. Файлы метаданных подробно описывают, как столбцы в базе данных сопоставляются с доменом объекта. Такие как:
7. Подключение к базе данных:
Пул подключений к базе данных
8. Другие вопросы:
Вопрос выбора * из
Чаще используйте статический предварительно скомпилированный SQL