Como usar query no Spring Boot com JPA

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.


Comentários

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *