Hibernate - Camadas separadas, qual melhor forma de fazer isso?

6 respostas
javaormhibernatebll
Mertz

Estou com um duvida, vou usar uma camada de Hibernate, separada da parte web, qual seria o melhor manerira de usar os campos nas telas, um VO ou as classes do projeto Hibernate?

6 Respostas

Lucas_Camara

Para transferir dados entre camadas, geralmente usa-se DTO’s.

Mertz

Estes DTOs seriam iguais as entidades e receberiam os valores? ou tem outra maneira de implementar?

aix

Não necessariamente tenha que ser uma cópia da entidade, as vezes eles são compostos por campos de várias entidades o legal nesses casos é ter um pattern para realizar o trabalho sujo(converter as entidades para DTO’s), no meu caso eu uso uma camada assembler que realiza esse trabalho(faz a conversão de entidades para DTO), outro detalhe é que meus DTO’s são imutáveis ou seja, eles não tem métodos set, o valor recebido da view é o real valor que chega no servidor.

Alguns desenvolvedores fazem também a conversão de DTO para entidade, ou seja, realizando o mesmo processo mas agora do lado contrário, que vejo não sendo um bom design de software, criar um converter de DTO por entidade nem sempre há equivalência, a ideia de jogar um DTO para a tela ao invés da própria entidade é exatamente ter flexibilidade, ter tipos diferentes e até mesmo estruturas diferentes, então quando criamos um converter aumentamos o acoplamento entre as classes, para esses casos uso os set’s das entidades para receber o valor dos DTO’s, mas claro, cada um implementa como desejar sua aplicação, abraços.

Mertz

Então eu só uso os campos que eu preciso,teria um exemplo de implementação?, no meu projeto estou deixando a parte
hibernate separado, pois mais tarde vou ter aplicativo mobile.

Lucas_Camara

Vamos supor que você vá implementar uma consulta que retorna os dados de uma pessoa e do endereço dela. No mapeamento do banco, por exemplo, você terá uma classe pessoa e uma endereço para representar as tabelas do banco, e a relação entre essas tabelas é um-pra-um.

Ao apresentar na tela os dados de uma pessoa, você pode ter um DTO que já contemple todos os dados juntos, sem distição entre pessoa e endereço, assim:

public class DadosConsultaPessoaDTO {
    private String idPessoa;
    private String nomePessoa;
    private String logradouro;
    private String cep;
    // etc.
}

É um simples exemplo apenas para demonstra a ideia.

Mertz

Entendi…

Criado 30 de junho de 2016
Ultima resposta 30 de jun. de 2016
Respostas 6
Participantes 3