
54 - JPQL
JPQL, sigla para Java Persistence Query Language, é a linguagem de consulta utilizada no JPA para acessar dados persistidos no banco de dados. Diferentemente do SQL tradicional, que trabalha com tabelas e colunas, o JPQL é orientado a objetos, permitindo que as consultas sejam feitas diretamente sobre as entidades Java e seus atributos.
O que é JPQL?
JPQL, ou Java Persistence Query Language, é a linguagem de consulta utilizada em aplicações que utilizam JPA (Java Persistence API). Ela é parecida com SQL, mas trabalha com os nomes das entidades e seus atributos, e não diretamente com os nomes das tabelas e colunas do banco de dados.
Enquanto o SQL consulta diretamente o banco de dados, o JPQL trabalha com o modelo orientado a objetos, permitindo consultas baseadas em classes Java.
Com o JPQL é possível fazer seleções, filtros, ordenações e até junções entre entidades, tudo utilizando a sintaxe familiar do SQL, mas com foco em objetos.
Vantagens do JPQL
- Consulta baseada em entidades, não em tabelas.
- Portabilidade entre bancos de dados.
- Integração direta com os repositórios do Spring Data JPA.
- Maior legibilidade e reutilização de código.
Exemplo 1: Buscar todas as pessoas
@Query("SELECT p FROM PessoaModelo p")
List<PessoaModelo> buscarTodos();
Esse exemplo retorna todas as pessoas da tabela. Note que PessoaModelo
é o nome da entidade, e não da tabela do banco.
Exemplo 2: Buscar por cidade
@Query("SELECT p FROM PessoaModelo p WHERE p.cidade = :cidade")
List<PessoaModelo> buscarPorCidade(@Param("cidade") String cidade);
Esse JPQL busca pessoas com base na cidade informada. A anotação @Param
vincula o parâmetro ao valor recebido no método.
Exemplo 3: Buscar pessoas com idade maior que
@Query("SELECT p FROM PessoaModelo p WHERE p.idade > :idade")
List<PessoaModelo> maioresQue(@Param("idade") int idade);
Neste exemplo, são retornadas todas as pessoas com idade maior do que o valor fornecido.
Exemplo 4: Buscar pelo nome com LIKE
@Query("SELECT p FROM PessoaModelo p WHERE p.nome LIKE %:nome%")
List<PessoaModelo> buscarPorNome(@Param("nome") String nome);
Aqui utilizamos LIKE
para realizar uma busca parcial pelo nome da pessoa.
Clique aqui para se tornar membro do canal