Dúvida sobre DTO (Data transfer object)

Por este dias, me deparei com uma exceção de nome “LazyInitializationException”.

Para resolver a questão, gastei algumas horas entendendo o que seria, porque acontecia e claro, como evitar. Durante esta pesquisa, entendi que em algumas vezes, o uso de DTOs poderia evitar o problema.

Eu não conhecia o termo, mas me pareceu ser o mesmo que uma “view” de banco de dados, só que feita programaticamente. este entendimento esta correto ?

Caso eu esteja correto, em uma aplicação utilizando JPA, o que perfoma melhor em “views” complexas, com muitos joins e restrições ? Uma “view” no banco de dados ou uma classe “DTO” com esta função ? Imagino, que de qualquer forma, terei que ter uma classe que me traga esta view do banco de dados, e neste caso, ela seria também uma DTO?

Pesquise sobre HQL/JPQL e join fetch. É a forma mais eficiente de se fazer querys no JPA. Elimina o problema de lazy, n querys e esse lazy exception.

O mais performático é não usar JPA. Usar SQL + objeto Java puro. Pode ser DTO, mas pra mim não importa a sigla.

1 curtida