Слой источников данных - 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.
Все созданные тесты были успешно пройдены и не раз запускались при дальнейшей модификации программы.