Шестиугольная архитектура с Hibernate Reactive и Quarkus
Я использую Hexagonal Architecture, Hibernate Reactive с Panache и Quarkus в проекте Kotlin.
Границы транзакций устанавливаются с помощью аннотации.
Проблема в том, что мне пришлось добавить весь
Есть ли способ избежать этого?
Я надеялся, что можно будет создать аннотацию домена, а затем на уровне адаптеров заменить ее на
2 ответа
Не используйте зависимости, связанные с базой данных, внутри шестиугольника.
Идея состоит в том, чтобы отделить бизнес-логику от пользовательского интерфейса и инфраструктуры. Логика базы данных должна быть размещена в адаптере.
В теории это звучит великолепно, на практике это означает тонны картографов, т.е. шаблонного кода. С другой стороны, у вас есть проект Kotlin, а не проект Java, так что это должно быть немного менее утомительно, чем альтернатива. Имейте в виду, что существуют такие проекты, как Dozer, MapStruct, которые могут упростить процесс картирования.
Вы можете удалить аннотацию из класса, обернуть ее в службу и реализовать эту службу на уровне адаптера с помощью аннотации.