Когда вы строите приложение следуя DDD, одна из ключевых задач — чётко понимать границы агрегатов:
🟣 Кто чей root?
🟣 Какие связи действительно важны, а какие просто случайные зависимости?
Особенно это актуально для Spring Data JDBC, где парадигмы DDD зашиты в ДНК фреймворка, а вместо привычных многим аннотаций
@ManyToOne, @ManyToMany и т.д., используются AggregateReference и @MappedCollection.Разобраться в структуре проекта с такими вводными – нетривиальная задача.
Даже если вы придерживаетесь всех рекомендаций DDD — всё равно в какой-то момент ловите себя на мысли: «А где, собственно, начинается и заканчивается мой Order агрегат? Почему он вдруг знает про Payment, а тот — про Discount?»
Мы поняли, что с этим сталкиваются многие, кто разрабатывает приложения с использованием Spring Data JDBC, и решили помочь.
Начиная со следующего релиза, Amplicode Explorer будет показывать структуру вашей доменной модели именно с точки зрения агрегатов. Не просто дерево сущностей, а агрегаты как концепции DDD. Что является AggregateRoot, какие есть вложенные коллекции через
@MappedCollection, где используются AggregateReference.P.S. Как вам такая визуализация DDD? Может стоит и для JPA сделать подобное представление 😉?
