Не могу понять, в чём разница между этими тремя сущностями.
DTO ещё хоть как-то могу понять, они скорее всего используются для передачи данных между частями системы (передать данные в сервис например).
Хотя меня смущает концепция тем, что мне на каждый чих нужно создавать свою DTO-модель, потому что в одном сервисе нужны одни поля от User например, в другом сервисе другие поля.
А ещё есть Декораторы и они вроде бы служат той же цели.
А между Resource и ViewModel вообще не вижу разницы. Оба используются для генерации ответов API.