Tag Archive: hibernate


JPA 2 + Hibernate – Criteria

Mais um post ai pra galera, iremos falar sobre Criteria agora.

A algum tempo fui apresentado a API de consultas do Hibernate (Hibernate Criteria API), a idéia basica desta api é que poderiamos fazer consultas SQL ao invés de consultas do Hibernate (HQL).
Fiz uso desta API por algum tempo e sempre obtive bons resultados.

Só que com a JPA 2, passamos a ter acesso a uma outra API de criteria. Há vantagens e também desvantagens de se usar esta API, veja:

Vantagens:

  • Verificação de erros – Muitos erros podem ser identificados em tempo de compilação do projeto;
  • Segurança – Como a JPA trata de criar estas consultas, ficamos quase imunes a SQL injections.

Desvantagens:

  • Complexidade – Muitos desenvolvedor estão acostumados a utilizar linguagens SQL/HQL/JPQL e migrar pra esta API não é simples.

Veremos agora a utilização da API.

Executando uma consulta utilizando JPQL:

		Query q = entityManager.createQuery("SELECT p FROM Produto p");
		List resultList = q.getResultList();

Para executarmos esta mesma query, mas utilizando JPA Criteria API:

Continue lendo

JPA 2 + Hibernate – Named Query

Dando sequencia aqui nos posts sobre jpa e hibernate, iremos falar hoje sobre Named Query.

Apesar da flexibilidade de criarmos query dinamicas isso pode prejudicar significativamente a aplicação em relação a performance, como exemplo vamos ver a query abaixo:

public void anyMethod(){
	String qString = "SELECT p FROM Produto p";
	Query query = entityManager.createQuery(qString);
}

Se criarmos uma consulta dinamica dentro de um método qualquer, toda vez que este método for executado o código JPQL referente a consulta será processado causando lentidão e consultas desnecessárias, uma alternativa menos flexivel porém que tem mais performance é a criação de named queries.

Continue lendo

JPA 2 + Hibernate – Relacionamentos

Mais um post sobre JPA 2.0 + Hibernate, neste post iremos ver os relacionamentos entre as classes.

Os relacionamentos entre as entidades devem ser expressos na modelagem através de vínculos entre as classes. Podemos definir quatro tipos de relacionamentos entre as classes, tais como:

  • One to One (Um para um)

Continue lendo

JPA 2 + Hibernate – Introdução

Falaaa galeraaaa, mais um post aqui no blog programandojava.

Vamos falar um pouco de JPA 2.0 + Hibernate, ao final do post veremos toda a teoria em pratica.

Essa ferramenta atua como intermediária, automatizando diversos processos importantes relacionados à persistência dos dados. São chamadas de ferramentas ORM (Object Relational Mapping).

Com o intuito de facilitar a utilização dessas ferramentas e torná-las compatíveis com os outros recursos da plataforma Java, elas são padronizadas pela especificação Java Persistence API (JPA).

Para fazer uso do Hibernate, devemos fazer algumas configurações básicas, tais como:

  • Importar os Jars necessarios para uso do hibernate;
  • Configurar o logger (não obrigatório, porém para ter maior controle das persistências do hibernate devemos configurar. Iremos utilizar o log4j).
  • Como iremos usar JPA, devemos criar um arquivo chamado persistence.xml, este arquivo deve estar na pasta META-INF que por sua vez deve estar no classpath da aplicação.

Um dos principais objetivos dos frameworks ORM é estabelecer o mapeamento entre os conceitos de orientação a objeto e os conceitos de modelo entidade relacional.

Isto pode ser feito através de XML ou de uma maneira mais pratica utilizando anotações java, quando optamos por utilizar anotações, evitamos a criação de extensos arquivos XML.

A seguir as principais anotações de mapeamento JPA, estas fazem parte do pacote javax.persistence.

Continue lendo