Idempotência em APIs
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...
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...
Você já reparou que, às vezes, você altera um objeto Java recuperado do Hibernate, chama o commit() da transação e, magicamente, o banco de dados é atualizado sem você ter chamado repository.save()...
Se o banco de dados é o gargalo da sua aplicação, você provavelmente já pensou em usar cache. O Hibernate oferece um mecanismo poderoso chamado Cache de Segundo Nível (L2 Cache). Mas cuidado: ele n...
O Hibernate é o rei do ORM no mundo Java, e o Lazy Loading (Carregamento Preguiçoso) é uma de suas funcionalidades mais amadas e odiadas. Se você já viu uma LazyInitializationException no seu log, ...