Ótima fonte para aprender Hibernate
Ei pessoal, se você quer uma ótima fonte para aprender Hibernate, aqui está:
http://www.roseindia.net/hibernate/index.shtml
Enjoy!
Hibernate: HQL x Criteria
É muito comum em entrevistas perguntarem as diferenças entre HQL e Criteria, ambos relacionados com Hibernate. Para quem não sabe, HQL quer dizer Hibernate Query Language.
O HQL é mais próximo do SQL, é mais utilizado para consultas fixas, que não tem alterações no número de parâmetros necessários.
O Criteria é mais voltado para consultas onde o número de parâmetros não é conhecido, como em listagens que contém N filtros, neste caso o Criteria é mais recomendado por montar uma instrução mais direcionada para a busca em questão, sem adicionar campos ou parâmetros desnecessários, o que acaba agilizando a consulta na base de dados.
O Criteria oferece ainda N métodos e parâmetros para realmente fazermos uma busca bem poderosa e personalizada.
Um exemplo de uso de criteria é este abaixo, onde já temos uma classe CIDADE mapeada no Hibernate:
Criteria c = getSession().createCriteria(Cidades.class); // criando o criteria para a classe cidade
c.add( Restrictions.eq(“estado.uf”, “SP”) ); // fazendo um filtro, no caso, onde estado == SP
List cidadesDeSaoPaulo = c.list(); // retornando a listagem – Fácil né?
O mais interessante ainda é que criteria tem vários métodos que podem nos auxiliar com as querys, por exemplo, trazer ordenado por descrição:
c.addOrder( Order.asc(“descricao”) );
Para setar a quantidade máxima de resultados, usamos o setMaxResults:
crit.setMaxResults(15);
Referências:
Mais sobre criteria pode ser obtido aqui.
Vários exemplos de consultas podem ser obtidas aqui.
Mais sobre HQL aqui.
Enjoy!
Executando uma Stored Procedure no Hibernate
Essa muita gente pergunta, como executar uma Stored Procedure no Hibernate?
Basicamente os passos são:
0- Criamos a stored procedure no banco.
1- Criamos uma mapped query, ja relacionada a classe que vai ter um método que representa o “output” da stored procedure.
3- Chamamos a mapped query jogando o resultado dela num objeto que recebe o retorno do método que criamos na classe citada acima.
Um exemplo completo pode ser visto aqui.