Ofereço ajuda em Java, C/C++, Python, C#, LISP, AutoLisp, AutoCAD
+55 (062) 98553-6711
Ofereço ajuda em PHP, Python, C#, JavaScript, Laravel, Google Ads e SEO
+55 (062) 98243-1195

Você está aqui: JPA - Java Persistence Architecture API - Arquitetura de Persistência Java ::: Dicas & Truques ::: Anotações JPA (JPA Annotations)

Aprenda a usar a anotação @NamedQuery para definir queries nomeadas em suas aplicações JPA

Quantidade de visualizações: 4144 vezes
As queries nomeadas, ou named queries, são muito úteis na organização das queries de um determinado contexto de persistência. A anotação @NamedQuery é usada quando precisamos definir tais queries e é colocada na definição da classe para as entidades. As queries nomeadas complementam o trabalho realizado pelo método find() da interface EntityManager, usado para pesquisar e retornar uma entidade de acordo com o valor de sua chave primária.

Veja o exemplo de uma querie nomeada usada para retornar todos os clientes cujos nomes possuam um determinado texto:

package entidades;

import java.io.Serializable;
import javax.persistence.*;
import java.util.Date;

@Entity
@Table(name="clientes")
@NamedQuery(name="Cliente.encontrarClientesNomeParcial", query="SELECT c FROM " +
  "Cliente c WHERE c.nome LIKE :nomeCliente")
public class Cliente implements Serializable {
  @Id
  @GeneratedValue(strategy=GenerationType.IDENTITY)
  private int id;
  private String nome;
  private String email;
  @Temporal(TemporalType.TIMESTAMP)
  @Column(name="data_cadastro")
  private Date dataCadastro;

......


Note que inclui a query nomeada antes da declaração da classe entidade Cliente. Veja-a novamente:

@NamedQuery(name="Cliente.encontrarClientesNomeParcial", query="SELECT c FROM " +
......


Como você pode ver, o nome da query é "Cliente.encontrarClientesNomeParcial" e ela encontra todos os clientes cujos nomes possuam um determinado texto (você conhece a cláusula LIKE do SQL, não?). É sempre interessante colocar o nome da entidade junto ao nome da query. Desta forma as chances de você ter queries nomeadas duplicadas no contexto de persistência são reduzidas.

Veja agora como essa query pode ser chamada a partir da classe principal de uma aplicação JPA:

package estudosjpa;

import entidades.Cliente;
import java.util.List;
import javax.persistence.*;

public class EstudosJPA {
  public static void main(String[] args) {
    // vamos criar o EntityManagerFactory a partir do contexto de persistência
    EntityManagerFactory emf = 
      Persistence.createEntityManagerFactory("LocadoraService");
    
    // vamos obter um objeto da interface EntityManager
    EntityManager em = emf.createEntityManager();
    
    // vamos obter os clientes que possuem a palavra "Ramos" em seus nomes
......


Veja que usamos o método createNamedQuery() da interface EntityManager para criar a query nomeada, fornecemos o parâmetro e definimos o retorno como uma lista. Ao executar o exemplo você terá um lista de objetos da classe Cliente que se encaixaram na pesquisa.

Link para compartilhar na Internet ou com seus amigos:

Veja mais Dicas e truques de JPA - Java Persistence Architecture API - Arquitetura de Persistência Java

Dicas e truques de outras linguagens

E-Books em PDF

E-Book 650 Dicas, Truques e Exercícios Resolvidos de Python - PDF com 1.200 páginas
Domine lógica de programação e a linguagem Python com o nosso E-Book 650 Dicas, Truques e Exercícios Exercícios de Python, para você estudar onde e quando quiser.

Este e-book contém dicas, truques e exercícios resolvidos abrangendo os tópicos: Python básico, matemática e estatística, banco de dados, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book
E-Book 350 Exercícios Resolvidos de Java - PDF com 500 páginas
Domine lógica de programação e a linguagem Java com o nosso E-Book 350 Exercícios Exercícios de Java, para você estudar onde e quando quiser.

Este e-book contém exercícios resolvidos abrangendo os tópicos: Java básico, matemática e estatística, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: C
6º lugar: Delphi
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2025 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 24 usuários muito felizes estudando em nosso site.