0%
Projeto completo com Spring Boot

Projeto

Tudo o que veio antes, reunido em uma aplicação que pode ir para produção.

15-20 min

Projeto completo com Spring Boot

As sete lições anteriores trataram cada assunto de forma isolada. Este capítulo os reúne em uma aplicação de livraria online, com a divisão em camadas, os repositórios, a paginação, o gerenciamento de transações e os testes. O objetivo não é mostrar uma arquitetura exemplar: é mostrar onde cada armadilha vista anteriormente aparece em um projeto real e qual decisão de design a neutraliza.

O Spring Data JPA adiciona ao JPA um mecanismo que merece atenção: ele gera a implementação dos repositórios a partir do nome dos métodos. Escrever findByAuteurNomContainingIgnoreCase basta para obter a consulta correspondente. É um ganho de tempo real e uma armadilha igualmente real — porque nada no nome de um método diz quais relacionamentos serão carregados, e acabamos caindo nos N+1 sem sequer escrever JPQL.

A organização adotada aqui se apoia em uma única regra, que decorre de tudo o que foi visto: uma entidade nunca atravessa a fronteira da camada transacional. As entidades vivem no serviço, os DTOs saem dele. Essa regra elimina de uma só vez as LazyInitializationException, os N+1 disparados a partir da camada web e os vazamentos de dados internos nas respostas HTTP.

Comentários

Os comentários são alimentados pelo GitHub Discussions

Conecte-se com o GitHub para participar da discussão

Link copiado!