Слой источников данных - PavelKushnar/Software_Architecture_Design GitHub Wiki

Для реализации слоя источников данных, было решено использовать реляционные базы данных. В качестве СУБД выбрана система MySQL. Для подключения к базе данных в исходном коде используется синглтон-класс DataGateway. Данный класс считывает из конфигурационного файла параметры подключения к базе данных, подключается к ней и предоставляет всем остальным классам слоя источника данных доступ к БД.

Для корректного отображения объектов из системы в базу данных используется паттерн поле идентификации (Identity Field). Для сохранения взаимосвязей между объектами используется паттерн отображение внешних ключей (Foreign Key Mapping). В качестве шлюза к источнику данных был использован паттерн Data Access Object(DAO). В качестве основного способа объектно-реляционного отображения используются преобразователи данных (data mappers). Каждая сущность имеет собственный маппер и отображается в соответствующую таблицу. В результате нескольких итерационных подходов был сформирован следующий вид базы данных: БД

В приложении имеется пакет классов, отвечающих за обмен данными между приложением и БД: package database

  • Класс-родитель, в котором осуществлены процедуры соединения и отсоединения от БД - DataGateway
  • Класс для обмена данными с таблицей Person - PersonMapper
  • Класс для обмена данными с таблицей Spectacle - SpectacleMapper
  • Класс для обмена данными с таблицей Mesto - MestoMapper
  • Класс для обмена данными с таблицей Seans - SeansMapper
  • Класс для обмена данными с таблицей Bron - BronMapper

У каждого мапера присутствуют следющие методы: Add ,getById,update

Для реализации паттерна Data Access Object создан интерфейс MemberRepository. Реализациями интерфейса являются классы DBMemberRepository и ArrayMemberRepository.

Для реализации паттерна Data Access Object создан интерфейс MemberRepository. Реализациями интерфейса являются классы DBMemberRepository и ArrayMemberRepository.

Для тестирования базы данных в целом и каждого маппер объекта по отдельности были написаны следующие Junit, хранящиеся в пакете Databasetests: tSpectacleMapperTest,PersonMapperTest ,MestoMapperTest, SeansMapperTest, BronMapperTest.

Все созданные тесты были успешно пройдены и не раз запускались при дальнейшей модификации программы.