Se você está desenvolvendo APIs REST em Java e precisa de consultas mais específicas no banco de dados, saber como utilizar query no Spring Boot com JPA é essencial. Neste guia prático, você vai aprender a criar queries personalizadas usando a anotação @Query
, além de ver exemplos reais de uso.
Por que criar queries personalizadas?
O Spring Data JPA fornece métodos prontos como findAll()
, save()
e deleteById()
, mas nem sempre eles são suficientes. Em situações onde você precisa filtrar registros por múltiplos critérios ou realizar joins, saber como usar query no Spring Boot é o que diferencia uma aplicação básica de uma robusta.
Como usar query no Spring Boot com @Query
Vamos ao passo a passo para criar uma query customizada usando a anotação @Query
.
1. Estrutura do projeto
Antes de tudo, é necessário ter um projeto Spring Boot com JPA e banco de dados configurado. Se ainda não tiver, confira nosso tutorial Spring Boot com JPA: integração com banco de dados.
2. Exemplo de entidade
Vamos usar como exemplo a entidade Produto
:
@Entity
public class Produto {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String nome;
private Double preco;
// getters e setters
}
3. Criando o repositório com @Query
Agora sim, veja como usar query no Spring Boot para buscar produtos por nome:
public interface ProdutoRepository extends JpaRepository<Produto, Long> {
@Query("SELECT p FROM Produto p WHERE p.nome LIKE %:nome%")
List<Produto> buscarPorNome(@Param("nome") String nome);
}
Essa é uma query JPQL, que busca produtos cujo nome contenha o valor passado.
4. Queries nativas com nativeQuery = true
Se quiser usar SQL puro, basta adicionar nativeQuery = true
:
@Query(value = "SELECT * FROM produto WHERE preco > :preco", nativeQuery = true)
List<Produto> buscarPorPreco(@Param("preco") Double preco);
Essa flexibilidade mostra o poder de quem entende como usar query no Spring Boot de forma eficiente.
5. Chamando no controller
@RestController
@RequestMapping("/produtos")
public class ProdutoController {
@Autowired
private ProdutoRepository repository;
@GetMapping("/buscar")
public List<Produto> buscarPorNome(@RequestParam String nome) {
return repository.buscarPorNome(nome);
}
}
Pronto! Sua API agora possui consultas personalizadas com JPA.
Conclusão
Saber como usar query no Spring Boot com @Query
e nativeQuery
permite que você crie consultas poderosas, sob medida para as necessidades da sua aplicação. Isso garante maior controle, performance e legibilidade no acesso a dados.
Quer aprender mais sobre performance e boas práticas com JPA? Recomendamos a leitura do artigo oficial da Spring Data JPA Documentation.
Deixe um comentário