Шестиугольная архитектура с Hibernate Reactive и Quarkus

Я использую Hexagonal Architecture, Hibernate Reactive с Panache и Quarkus в проекте Kotlin.

Границы транзакций устанавливаются с помощью аннотации.

Проблема в том, что мне пришлось добавить весь зависимость в доменном и прикладном уровнях только для того, чтобы сделать эту аннотацию доступной.

Есть ли способ избежать этого?

Я надеялся, что можно будет создать аннотацию домена, а затем на уровне адаптеров заменить ее на как-то.

2 ответа

Не используйте зависимости, связанные с базой данных, внутри шестиугольника.

Идея состоит в том, чтобы отделить бизнес-логику от пользовательского интерфейса и инфраструктуры. Логика базы данных должна быть размещена в адаптере.

В теории это звучит великолепно, на практике это означает тонны картографов, т.е. шаблонного кода. С другой стороны, у вас есть проект Kotlin, а не проект Java, так что это должно быть немного менее утомительно, чем альтернатива. Имейте в виду, что существуют такие проекты, как Dozer, MapStruct, которые могут упростить процесс картирования.

Вы можете удалить аннотацию из класса, обернуть ее в службу и реализовать эту службу на уровне адаптера с помощью аннотации.

Другие вопросы по тегам