Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Hibernate

estou aprendendo Hibernate e estou uma uma duvida.

Qual a diferença entre Session x Criteria?

Em alguns tópicos vi que quando é usado Session do Hibernate a aplicação perde um pouco a performance. alguém pode me dar um Help sobre isso?

Estou com 2 tipos de consulta. e estou em dúvida de qual a diferença entre elas e qual a melhor forma de usar;

Exemplo 1

CriteriaBuilder builder = manager.getCriteriaBuilder(); //cria Builder
        CriteriaQuery<Aluguel> criteriaQuery = builder.createQuery(Aluguel.class); //cria a query;
        Root<Aluguel> a = criteriaQuery.from(Aluguel.class);//cria consulta;

Exemplo 2

Session session = this.manager.unwrap(Session.class);
        Criteria criteria = session.createCriteria(Aluguel.class);

        if (dataEntrega != null) {
            criteria.add(Restrictions.between("dataEntrega"
                    , geraDataInicial(dataEntrega), geraDataFinal(dataEntrega)));
        }
5 respostas

Boa noite!

Criteria é um objeto de consulta aos objetos persistentes em algum repositório de dados. Para instanciar um objeto Criteria você necessita de um objeto Session que gerencia a comunicação com a base de dados usada para persistência. Veja o fragmento do seu código e observe como o Criteria é instanciado.

Criteria criteria = session.createCriteria(Aluguel.class);

Abs.

hum... esse primeiro exemplo porque não usa a session? seria outra forma de consulta?

O primeiro exemplo está usando JPA enquanto o segundo exemplo que você postou está usando Hibernate. Assim, são realmente duas formas diferentes de fazer consulta.

Link interessante sobre JPA: http://www.objectdb.com/java/jpa/query/criteria

Link do Hibernate: https://docs.jboss.org/hibernate/orm/3.3/reference/pt-BR/html/querycriteria.html

Abs.

Obrigado pela ajuda, na realidade estava confundindo! Pensava que as duas formas era do Hibernate.

No Caso a primeira como tinha mostrado era do javax.persistence que seria JPA correto?

Agora entendi que a segunda forma seria do Hibernate.

Obrigado amigo!

solução!

Isso mesmo!

Disponha.