Qual a melhor pratica para para DTO, tanto em JPA como em JDBC.
Por exemplo no meu modelo de Entidades tenho um objeto Pedido que tem dois objetos (Fornecedor e Empresa Aninhados). No caso dos meus DTO`, devos trazer os atributos desses sub-objetos (RazaoSocial, Telefone do fornecdor) para o meu DTO de Pedidos? Simplicando: desnormalizar meus objetos para tornar-los mais simples para apresentacao?
A regra é simples, o DTO deve representar a estrutura do resultado esperado. Se por exemplo uma tela só precisa de razao social e telefone, crie um DTO só pra isso.
Não precisa desse overhead de modelo de entidades no seu programa. O importante é o modelo de entidades do banco de dados, onde você pode consultar diretamente via SQL e preencher seu DTO. Quanto mais desnormalizado trazer do banco, menor as idas no mesmo, por consequência melhor performance.
A
andre.c.alves
Faz sentido. E o DTO deve ser criado para um fim especifico? Explicando melhor, tenho telas em que apresento o pedido como variações pequenas nos dados (apenas alguns atributos).
Ex tosco:
PedidoEmpDTO {
nroPedido, nomeFornecedor}
PedidoFornDTO {
nroPerdido, nomeEmp}
ou crio um DTO “Generico”
PedidoDTO {
nroPedido, nomeForn, nomeEmp } … simplesmente deixando null os atributos que nao uso?
Solucao aceita
javaflex2 likes
Fica a seu critério, ai vale o bom senso. No geral eu prefiro não misturar responsabilidades, pra manutenção da query e dto de uma tela nao impactar na outra.