Archive for maio, 2012


CRUD JSF 2 + JPA 2 – Parte 1

Fala pessoal, blzz?

Vamos dar sequencia aqui aos postos do blog programandojava, a partir de hoje estarei fazendo alguns posts referente a um CRUD (Create, Read, Update e Delete) utilizando JSF 2.0 + JPA 2.0.

Neste primeiro post iremos ver apenas os requisitos do sistema exemplo e o script para geração do banco de dados.

Temos os seguintes requisitos para nosso sistema:

“Desenvolver uma aplicação Web utilizando Java que permita o cadastro e controle de DVDs. Um DVD é composto por um identificador (utilizado internamente no sistema), um titulo, um preço, um ano, uma faixa etária e um Gênero. O titulo do DVD não deve ter mais que 20 caracteres. Um Gênero deve ser composto também por um identificador, um nome (máximo 20 caracteres). Todos os atributos de DVD Gênero são obrigatórios. Para cada uma das entidades, desenvolva um formulário de cadastro e manutenção onde todos os dados devem ser apresentados em uma tabela.”

Continue lendo

Anúncios

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 – Operações

Vamos dar sequencia aos posts sobre JPA 2.0 + Hibernate.

O pré-requisito inicial deste post é ter lido e/ou seguido este post.

Neste post vamos ver algumas das operações basicas de um sistema, tais como:

  • Persistir;
  • Listar;
  • Buscar;
  • Atualizar;
  • Remover;

Persistindo dados:

Para persistir e armazenar as informações de um objeto no banco de dados basta utilizarmos o método persist() do EntityManager.

		Produto novoProduto = new Produto();

		novoProduto.setNome("Produto 1");
		novoProduto.setValor(25.8);

		entityManager.persist(novoProduto);

Continue lendo