Организация многовложеной структуры объектов в java программе

Всем привет! Есть необходимость разработать программу на Java которая будет хранить учебные программы которые состоят из некоторых тем, а те темы в свою очередь могут состоять из других тем, а эти из следующих. То есть требования гласят, что программы могут быть разной вложенности. Мой вопрос заключается в том как лучше организовать доменную модель для реализации такой задачи? На данный момент я имею следующую идеювведите сюда описание изображения Объект Topic может содержать список других топиков, а те следующих и так далее. Но мне кажется, что при большой вложенности могут быть сложности с обработкой этих объектов(сохранение в бд, удаление, редактирование). В качестве базы данных будет монго. Буду очень рад если получу помощь в моем вопросе, или может есть примеры подобных реализаций?


Ответы (1 шт):

Автор решения: Sergey Zh.

Если сделаете как написали - есть риск словить циклическую зависимость и рекурсивное переполнение стека.

Поэтому в самом Topic лучше хранить не лист топиков, а лист чего-то вроде DTO от этих топиков. Либо вообще убрать зависимости из класса Topic и сделать дублирующий класс, который будет обрабатывать запросы на зависимости. Это некрасиво в плане архитектуры (дублирование), но эффективнее с точки зрения запросов к БД (и не получим переполнение стека).

→ Ссылка