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