CodeGym/Cursos Java/All lectures for PT purposes/Outros tipos de solicitações

Outros tipos de solicitações

Disponível

6.1 Consultas nomeadas

O Hibernate permite que você não armazene consultas diretamente no código. Em vez disso, ele sugere dar nomes às consultas e armazená-las separadamente como anotações. Bem, então pegue a solicitação desejada diretamente pelo nome. Exemplo:

@org.hibernate.annotations.NamedQueries({
    @org.hibernate.annotations.NamedQuery(name = "Employee_FindById",
  	query = "from Employee where id = :id"),
    @org.hibernate.annotations.NamedQuery(name = "Employee_FindAllEmployes",
  	query = "from Employee"),
    @org.hibernate.annotations.NamedQuery(name = "Employee_UpdateEmployeeName",
  	query = "Update Employee set name = :newName where id = :id"),
...
})

As anotações podem ser adicionadas antes de qualquer classe de Entidade: os nomes das consultas não estão vinculados a nenhuma Entidade.

Você também pode adicionar vários parâmetros à consulta (consulta):

@org.hibernate.annotations.NamedQuery(
  name = "Employee_ FindAllEmployes",
  query = "from Employee",
  timeout = 1,
  fetchSize = 10,
  cacheable = true,
  cacheMode = "GET"
)

Usar essas solicitações é muito simples - para isso, você precisa usar um método createNamedQueryem vez de um método createQuery:

Query<Employee> query = session.createNamedQuery("Employee_FindAllEmployes", Employee.class);
List<Employee> resultLIst = query.list();

6.2 NativeQuery

E outra coisa simples, mas muito útil, é NativeQuery .

Se você não deseja usar HQL, mas deseja usar o Hibernate para mapeamento de entidades, pode escrever consultas no bom e velho SQL. Ninguém te limita.

Para fazer isso, basta chamar o método createNativeQuery(), em vez de createQuery().

NativeQuery<Employee> query = session.createNativeQuery("select * from employee", Employee.class);
List<Employee> resultLIst = query.list();

Você acabou de escrever createNativeQuerye tudo funcionará como antes. Este método retorna um objeto do tipo NativeQuery , que suporta todos os métodos que a classe Query suporta . Nada vai mudar para você.

Além disso, a Native SQL Query também pode ser armazenada como Named Queries .

@org.hibernate.annotations.NamedNativeQueries(
    @org.hibernate.annotations.NamedNativeQuery(name = "Employee_GetAll",
  	query = "select * from employee",
  	resultClass = Employee.class)
)

E, claro, aqui está o código para trabalhar com eles:

NativeQuery<Employee> query = session.createNamedQuery("Employee_GetAll", Employee.class);
List<Employee> resultLIst = query.list();
Comentários
  • Populares
  • Novas
  • Antigas
Você precisa acessar para deixar um comentário
Esta página ainda não tem nenhum comentário