Как реализовать DAO с помощью Java JDBC для БД со связанной таблицей
Допустим есть 4 таблицы:
users: | id | login | password | ---------------------------- | 1 | user1 | 123 | ....................... |__________________________| contacts: | id | user_id | name | phone | ---------------------------- | 1 | 1 | Alex | 444 | ..................................... |________________________________________| task: | id | user_id | name | notify Date | ---------------------------------------------- | 1 | 1 | task1 | 27.02.2020 22:05 | .......................................... |____________________________________________| task_contacts: | task_id | contact_id | ------------------------ | 1 | 1 | ........................ |______________________|
Пользователь может создавать задачи и контакты. Задачи могут хранить в себе контакты.
Как правильно реализовать DAO для 4 таблицы связывающую две других? Или вообще как поступить в этом случае?
Для первых 3 таблиц как делать понятно, вытягиваем из таблиц данные с помощью соответствующих DAO классов и в каком-нибудь классе-фасаде все объединяем и отдаем на выход.
Случай с 4 таблицей вгоняет в тупик, в классе DAO мне придется делать запросы в две разные таблицы, а ведь, если я правильно понимаю, идея шаблона - это "одна DAO для одной таблицы". Другой способ - не делать DAO для этой таблицы, а сделать метод, например, findAllByTask(Task task) в DAO для контактов, но в этом случае я буду обращаться в другую таблицу, которая не относится к контактам.
Была мысль использовать DAO для контактов внутри DAO для задач и на выход отдавать сразу готовую задачу с листом контактов, но после небольшого гугления выяснилось, что смешивать DAO очень не рекомендуется.
Хотелось бы научиться делать это правильно. Пробовал гуглить, но путей решения для такого случая найти не смог. В какую сторону посоветуйте копать? Я использую JDBC для обращения к БД в целях обучения, возможности использовать другие способы на данный момент нет.