Como recuperar objeto de domínio de repositórios

Estou com um pequeno problema ao entender a relação de objeto de domínio de repositório. Aqui estão algumas informações que eu sei sobre o design de domínio (elas também podem estar erradas ou não precisas). E com isso em mente, não consigo encontrar uma maneira de obter um objeto de domínio do repositório.

No DDD, o domínio deve saber e conter apenas o que é necessário para os negócios e tudo o mais deve ser limpo do domínio. Isso é bom. E também abstrair o acesso a dados de qualquer empresa também é uma boa prática. O aplicativo não precisa saber onde armazenamos dados ou como armazenamos dados. Pedimos apenas ao repositório que nos forneça um objeto de domínio e ele nos dê o objeto que queremos ou, caso contrário, também é válido, damos ao repositório um objeto de domínio e ele o envia para o armazenamento.

Declarar setters públicos para objetos de domínio também é uma abordagem muito ruim no design orientado a objetos, pois não poderemos controlar quem está acessando o que e mudando o que. Portanto, é uma boa prática expor apenas o que é necessário para fora do objeto.

Portanto, com isso em mente, não consigo descobrir uma maneira de implementar meus repositórios. Eu posso usar qualquer ORM ou sql puro no meu código e recuperar dados.

Mas não posso criar objetos de domínio a partir de objetos de persistência;

Como eles não têm setters públicos, não posso criar e definir os valores do campo.Declarar construtores públicos contendo todos os campos não parece certo. Talvez eu tenha vários modelos para preencher, isso significa que tenho que definir vários construtores com diferentes conjuntos de parâmetros.

Qualquer ajuda será apreciada...

questionAnswers(3)

yourAnswerToTheQuestion