Аргумент дмитрия, о том что ентити не должно покидать транзакционную область,, очень логичен. Но я всегда передавал из сервиса в контроллер ентити, а дальше конвертил, теперь думаю, норм ли это? Просто что меня смущает, это то, разные контроллеры могут работать с разными дто, а вот может быть для всех них нужна какая то общая логика, и поэтому я всегда работал на уровне логики с ентитям, чтобы в контроллеры сконвертить и все, а дальше уже все методв работают конкретно с энтити
Мне очень нравится концепция чистой архитектуры Мартина(гексогональной и тд). Контроллеры только адаптеры над вызвом апи(порты). Апи принимает дто и не раскрывает свою доменную модель. Внутри сервисы могут работать уже с доменной моделью и даже сущностями(entity), контроллеры не узнают об этом. Транзакция также внутри, не выходит в контролёр.
Этот подход позволяет вызвать приложения как по рест, так по другим транспортам, сделав адаптер над портом