Como testar sua JPQL / HQL sem realizar Deploy

Olá, tudo bem?

Você já teve a vontade de testar sua HQL / JPQL sem precisar realizar o deploy de sua aplicação?

A solução apresentada aqui hoje é simples e funciona para qualquer implementação do JPA: Hibernate, OpenJPA, EclipseLink dentre outras.

O código de hoje pode ser executado mesmo que você não tenha banco de dados. Ele utiliza o HSQLDB e já tem uma massa de dados pronta para ser consultada.

A fonte original desse código pode ser encontrada no livro: “Pro JPA 2: Mastering the Java™ Persistence API – Mike Keith, Merrick Schincariol“. O post de hoje acrescenta ao código original: parâmetros para as consultas e o teste de NamedQueries.

O que será apresentado no post de hoje:

  • Página 02: Classes do Modelo e Geração dos dados
  • Página 03: Classe de teste abstrata
  • Página 04: Teste de Query dinâmica
  • Página 05: Teste de NamedQuery
  • Página 06: Execução
  • Página 07: Adaptando o código para sua aplicação
  • Página 08: Sugestões

Ao final desse post se encontra o código fonte para download.

Na página 07 serão destacadas as partes dos códigos que necessitarão de alterações para que você possa aplicar o código do post de hoje ao seu projeto.

How to test your JPQL / HQL without a Deploy

Hello, how are you?

Have you ever wanted to test your JPQL / HQL without doing a full deploy of your application?

What we will see here today is simple solution that works for any JPA implementation: Hibernate, OpenJPA, EclipseLink and others.

The base source code found in this post came from this book: “Pro JPA 2: Mastering the Java™ Persistence API – Mike Keith, Merrick Schincariol”. This post will add to the original code: query parameters and NamedQuery test.

The post contents:

  • Page 02: Model classes and data Generation
  • Page 03: Abstract test class
  • Page 04: Dynamic Query test
  • Page 05: NamedQuery test
  • Page 06: Running the application
  • Page 07: Using this post code with your application code
  • Page 08: Proposals

You will find the source code of this post in the last page.

In the page 07 you will see how to apply the code of this post to the code of your application.

Aplicação Web Completa Tomcat JSF Primefaces JPA Hibernate

Olá, tudo bem?

Nesse post comemorativo de 100.000 visitas será descrita uma aplicação web completa. O post de hoje utilizará as seguintes tecnologias: Tomcat7, JSF 2 (Facelets e Libraries) com Primefaces (utilizando AutoComplete), JPA / Hibernate (com relacionamento NxN), Login por Filter.

Caso você queira ver uma aplicação completa utilizando JSF + EJB + JPA + JAAS + JBoss 7 clique aqui.

Para o projeto de hoje você precisará dos artefatos abaixo (todos os JARs você encontra com o código fonte disponível na última página):

O banco utilizado foi o Postgres, mas você pode utilizar qualquer um. Basta alterar o driver e a url de conexão do arquivo persistence.xml.

Ao final desse post você irá encontrar o código fonte juntamente com as bibliotecas utilizadas no projeto.

O que será visto em cada página:

  • Página 02: Modelo mapeado com anotações JPA. Utilização do relacionamento NxN (@ManyToMany) , NamedQueries utilizando Join Fetch e Enum como atributo.
  • Página 03: DAO Genérico, controle de transação, utilizar métodos genéricos que preencham os parâmetros de uma query.
  • Página 04: Façades utilizando transações, utilizar método findReferenceOnly, cuidados ao utilizar o comando entityManager.merge().
  • Página 05: Filters.
  • Página 06: ManagedBeans. Injetar um ManagedBean dentro de outro, observações sobre @ViewScoped.
  • Página 07: JSFMessageUtil.
  • Página 08: Arquivos de configurações: log4j.properties, messages.properties.
  • Página 09: xhtml pages, Facelets.
  • Página 10: Primefaces AutoComplete, JSF Converter utilizando “forClass”.
  • Página 11: Facilitando o uso de CSS/javascript/imagens com JSF.
  • Página 12: Configurações “web.xml”.
  • Página 13: Práticas para um programa mais seguro.
  • Página 14: Executando a aplicação
  • Página 15: BUG_FIX

A aplicação de hoje terá um cadastro de pessoas e cachorros onde apenas o ADMIN poderá cadastrar os cachorros. Antes de executar o projeto crie o banco de dados: “JSFCrudDB”.

Full Web Application with Tomcat JSF Primefaces JPA Hibernate

Hello, how are you?

We are happy for the 100k visitors. To celebrate this mark in this blog we created this post that will show how to create a full web application using the following tools: Tomcat7, JSF2 (Facelets and Libraries) with Primefaces (with AutoComplete), JPA / Hibernate (with a relationship NxN), Login with Filter.

If you want to see a full web application with JSF + EJB + JPA + JBoss 7 click here.

To run the code of this post you will need the artifacts bellow (all jar file you will find in the last page of this post):

You can use the any database you want, you will need the specific driver of the database and to edit the URL connection at the persistence.xml.

At the end of this post you will find the source code with all needed libraries to download.

What you will see today in this post:

  • Page 02: Entity classes of the model. A relationship NxN (@ManyToMany), NamedQueries with JoinFetch, Enum as attribute.
  • Page 03: Generic DAO, application transaction methods, generic methods to populate query parameters.
  • Page 04: Façades an transactions, using the method findReferenceOnly, care using the entityManager.merge() method.
  • Page 05: Filters.
  • Page 06: ManagedBeans. How to inject a ManagedBean inside another ManagedBean, observations about @ViewScoped.
  • Page 07: JSFMessageUtil.
  • Page 08: Configurations file: log4j.properties, messages.properties.
  • Page 09: xhtml pages, Facelets.
  • Page 10: Primefaces AutoComplete, JSF Converter with “forClass”.
  • Page 11: Easiest way to use CSS/javascript/images with JSF.
  • Page 12: “web.xml” configurations.
  • Page 13: Increasing the security of your application.
  • Page 14: Running the application.
  • Page 15: BUG_FIX

The application that you will find in here will have a Dog and Person CRUD (Create, Read, Update, and Delete); only the ADMIN will have access to the Dog CRUD. Before you run this application you should create a database named “JSFCrudDB”.