Oi Diego!
Uma lógica(algoritmo, validação, regra de negócio, etc.) deve ficar sempre na classe que fizer mais sentido, que no geral é a classe que contém os atributos que estão sendo manipulados.
Nesse exemplo que você citou, a lógica consiste apenas em pegar atributos de um dto e atribuí-los nos atributos da entidade, então ela pode ficar no própria entidade.
Mas em casos mais complexos, no quais várias entidades precisam ser manipuladas, ou quando um serviço externo precisa ser chamado(banco de dados, por exemplo), aí não faz mais sentido a lógica ficar dentro de uma entidade e sim em outra classe que vai encapsular e abstrair tal lógica.
Bons estudos!