Атомарность тут ломается на границе со внешними системами, это нормально. Но это не значит что атомарности теперь нет нигде. Крайности получаются, разве нет?
короч - SQL это отличная штука не для атомарно консистентно (если у тебя конечно логика не в БД) а для аналитики и тд. А лог транзакций для твоей любимой двойной записи можно спокойно и красиво держать в той же динаме
Есть сущность User его login должен быть уникален среди всех юзеров. Есть метод user.changeLogin() который меняет его. Как правильно проверить уникальность логина? Из сущности вызывать метод репозитория isUse()? Или написать сервис и перенести changeLogin туда?
В худшем случае отдельно в сервисе проверить просто никаких гарантий такая проверка не даёт. У тебя на ui с большим успехом будет уменьшаться вероятность конфликта