SOLID
Você já sentiu aquele frio na barriga ao precisar alterar uma regra de negócio em um sistema legado? Aquele medo de que uma pequena mudança em um Service quebre silenciosamente um fluxo de pagament...
Você já sentiu aquele frio na barriga ao precisar alterar uma regra de negócio em um sistema legado? Aquele medo de que uma pequena mudança em um Service quebre silenciosamente um fluxo de pagament...
Você abre um arquivo de serviço e encontra um método com 300 linhas, onde metade delas são blocos if-else ou switch-case verificando tipos de pagamento, tipos de usuário ou planos de assinatura. Es...
Muitos desenvolvedores usam os termos “Autenticação” e “Autorização” como se fossem a mesma coisa, mas no contexto de um API Gateway e Segurança de Sistemas, eles representam etapas completamente d...
Imagine que você está pagando um boleto no seu app. Você clica em “Confirmar”, a internet oscila e o app mostra um erro. Você clica de novo. Sem Idempotência, você acabaria pagando o boleto duas ve...
Sua API é um sucesso e agora você precisa adicionar uma funcionalidade que quebra o contrato antigo. Como fazer isso sem derrubar os milhares de clientes que já usam sua API? A resposta é o Version...
No JPA/Hibernate, uma entidade não é apenas um objeto Java comum. Ela passa por diferentes estados dentro do Persistence Context. Entender esses estados é a chave para evitar bugs bizarros onde dad...
Se você trabalha com Spring, o @Transactional é provavelmente a anotação que você mais usa. Mas você sabe o que acontece “por baixo dos panos” quando você a coloca em um método? Ela faz muito mais ...
Você precisa criar uma tela de busca com 10 filtros opcionais: nome, data de início, data de fim, status, categoria… Se você tentar resolver isso com strings (JPQL) e um monte de if (filtro != null...
Você tem um método anotado com @Transactional. Dentro dele, você atualiza o banco, chama uma API externa (ex: gateway de pagamento) e depois atualiza o banco novamente. Parece correto? Na verdade, ...
O Hibernate usa um sistema de cache em camadas para evitar idas desnecessárias ao banco de dados. Mas a diferença entre o Cache de Primeiro e Segundo nível confunde muitos desenvolvedores. Vamos de...