jan 25 2010

JPA 2.0 na Prática – Parte 1

Category: JPA 2.0Edson Gonçalves @ 2:59

Olá, tudo bom? Como vão vocês?

Este artigo é o primeiro de uma série ao qual vou ensiná-los a trabalhar com a Java Persistence API 2.0 (JPA 2.0).  Dúvidas e críticas são bem vindas.

Preparando o ambiente

Se você tem experiência com instruções SQL, JPA é  fácil de entender. A JPA trabalha com objetos diretamente e converte as suas instruções para SQL através da JDBC, de modo a executar no banco de dados.

JPA na prática começará com um ambiente de trabalho simples, onde teremos as execuções fora do ambiente Java EE.

O banco de dados

O banco de dados utilizado será o MySQL. Você pode baixar a versão 5.1, utilizada no artigo, aqui.

Preparando o banco de dados do exemplo

Abra o terminal do MySQL com seu usuário e senha ROOT (aquela que você configurou na instalação).

Crie o banco de dados executando o seguinte comando:

create database jpapratica;

Baixando e descompactando o driver JDBC

No mesmo local onde baixamos o MySQL, existe a versão atual do driver JDBC, chamado de Connector/J 5.1. Baixe o arquivo e o descompacte.  O arquivo JAR do qual iremos precisar será:

mysql-connector-java-5.1.10-bin.jar

O ambiente de trabalho

Os exemplos desenvolvidos serão criados no Eclipse IDE 3.6 M4, ao qual teremos uma breve explicação de como criar projetos JPA.

Baixando o Eclipse

No momento em que este artigo é criado, o Eclipse IDE 3.6 ainda está em desenvolvimento. Esta versão foi escolhida por possuir suporte a JPA 2.0. O pacote que vamos usar é o Eclipse IDE for Java EE Developers.

Download Eclipse IDE 3.6

Figura 1. Download do pacote Eclipse IDE 3.6 para Java EE

A  biblioteca JPA

O EclipseLink é a biblioteca oficial da Java Persistence API 2.0.  Você pode baixá-la clicando aqui. O arquivo baixado para o exemplo é o EclipseLink 2.0.0 Installer Zip.

Ao baixar o arquivo, descompacte-o. Você precisará das seguintes bibliotecas:

  • eclipselink.jar
  • javax.persistence_2.0.0.v200911271158.jar

Criando o projeto

No Eclipse, na view Project Explorer, clique com o direito e selecione New>JPA Project.

Criando um projeto JPA

Figura 2. Criando um projeto JPA no Eclipse

Na caixa de diálogo New JPA Project, digite o nome do projeto em Project name. No exemplo que usaremos será chamado de JpaNaPratica. Em Configuration, mantenha em Minimal JPA 2.0 Configuration. Clique no botão Next para prosseguir.

Primeira etapa do projeto

Figura 3. Primeira etapa da criação do projeto

A segunda etapa mantenha como está, prosseguindo com o botão Next.

Segunda etapa da criação do Projeto

Figura 4. Segunda etapa da criação do projeto

As bibliotecas do EclipseLink no projeto

Na terceira etapa, você vai configurar o EclipseLink 2.0. Para isso, clique no ícone Manage libraries.

Terceira etapa da criação do projeto

Figura 5. Terceira etapa da criação do projeto - Clicando no ícone Manage libraries

Na caixa de diálogo Preferences, clique no botão New.

Caixa de diálogo Preferences

Figura 6. Caixa de diálogo Preferences - Botão New

Na caixa de diálogo New User Library digite EclipseLink e confirme no botão OK.

Caixa de diálogo New User Library

Figura 7. Caixa de diálogo New User Library

Ao retornar a caixa de diálogo Preferences, clique no botão Add JARs e selecione as bibliotecas do EclipseLink.

Caixa de diálogo Preferences - botão Add JARs

Figura 8. Caixa de diálogo Preferences - botão Add JARs

Após selecioná-las, confirme a caixa de diálogo no botão OK.

Biblioteca EclipseLink com os JARs adicionados

Figura 9. Biblioteca EclipseLink com os JARs adicionados

Ao retornar ao diálogo de criação do seu projeto, marque a biblioteca EclipseLink que agora está lá.

Biblioteca EclipseLink adicionada na criação do projeto

Figura 10. Biblioteca EclipseLink adicionada na criação do projeto

A conexão no Eclipse e a biblioteca do banco de dados no projeto

Abaixo, em Connection, clique em Add connection.

Detalhe em Add Connection na criação do projeto

Figura 11. Detalhe em Add Connection na criação do projeto

Na caixa de diálogo New Connection Profile, selecione o MySQL e dê o nome da sua conexão em Name. Prossiga clicando no botão Next.

Caixa de diálogo New Connection Profile

Figura 12. Caixa de diálogo New Connection Profile

Na próxima etapa, você precisa adicionar definir o driver JDBC do banco de dados MySQL. Clique no ícone (New Driver Definition).

Detalhe da localização do ícone New Driver Definition

Figura 13. Detalhe da localização do ícone New Driver Definition

Na caixa de diálogo New Driver Definition, você possui três abas:

Name/Type – Aqui definimos qual a versão do driver JDBC iremos usar. Neste caso, MySQL JDBC Driver.

Selecionando o driver JDBC do MySQL

Figura 14. Selecionando o driver JDBC do MySQL

Jar List – O local onde se encontra o arquivo JAR. Neste caso, remova o atual, clicando em Remove JAR/Zip e adicione o que foi baixado em Add JAR/Zip.

Adicionando o path para o arquivo JDBC do MySQL

Figura 15. Adicionando o path para o arquivo JDBC do MySQL

Properties – Podemos configurar a conexão ao banco de dados. Coloque os dados do seu banco de dados utilizado no exemplo deste artigo.

Propriedades da conexão ao banco de dados do exemplo

Figura 16. Propriedades da conexão ao banco de dados do exemplo

Após configurar o seu driver e conexão com o banco de dados, confirme no botão OK.

Retornando ao diálogo New Connection Profile, agora com as configurações do seu banco de dados preenchidas, marque Save password.

Dados para a conexão preenchidos

Figura 17. Dados para a conexão preenchidos

Clique no botão Test Connection e, se estiver com tudo funcionando perfeitamente, verá uma mensagem de sucesso.

Conexão executada com sucesso

Figura 18. Conexão executada com sucesso

Terminadas estas configurações, seu perfil de conexão está pronto. Pode finalizar o diálogo clicando em Finish.

Caixa de diálogo New Connection Profile com dados da conexão

Figura 19. Caixa de diálogo New Connection Profile com dados da conexão

Retornando a criação do projeto, em New JPA Project, agora você possui todas as informações necessárias para criar o projeto JPA. Clique no botão Finish para gerar o projeto.

Etapa final do diálogo New JPA Project com tudo preenchido

Figura 20. Etapa final do diálogo New JPA Project com tudo preenchido

O Eclipse desejará colocar a perspectiva associada ao tipo de projeto. Basta confirmar em Yes.

Autorizando a mudança de perspectiva

Figura 21. Autorizando a mudança de perspectiva

O projeto gerado é mostrado na Figura a seguir:

Projeto JPA gerado

Figura 22. Projeto JPA gerado

Adicionando a biblioteca JDBC no projeto

Embora, para configurar o projeto JPA, você criou uma conexão com o MySQL, esta apenas funciona no Eclipse IDE. Para adicionar no seu projeto a biblioteca JDBC, clique com o direito do mouse sobre ele e selecione Properties no menu de contexto.

Na caixa de diálogo Properties, vá em Java Build Path, na aba Libraries e clique em Add Library.

Caixa de diálogo Properties, em Java Build Path, na aba Libraries

Figura 23. Caixa de diálogo Properties, em Java Build Path, na aba Libraries

Na caixa de diálogo Add Library, selecione Connectivity Driver Definition e clique no botão Next.

Caixa de diálogo Add Library, em Connectivity Driver Definition

Figura 24. Caixa de diálogo Add Library, em Connectivity Driver Definition

Na segunda etapa, selecione a configuração do MySQL que fez para o Eclipse, em Available Driver Definitions e confirme no botão Finish.

Seleção da configuração do MySQL em Available Driver Definitions

Figura 25. Seleção da configuração do MySQL em Available Driver Definitions

Agora você possui a biblioteca JDBC também em seu projeto. Agora confirme a caixa de diálogo e seu projeto estará pronto para trabalhar com a JPA 2.0.

Detalhe da biblioteca JDBC do MySQL adicionada ao projeto

Figura 26. Detalhe da biblioteca JDBC do MySQL adicionada ao projeto

Em JPA 2.0 na Prática – Parte 2, vocês verão como configurar, criar entidades e executar operações em JPA que serão refletidas no banco de dados do MySQL.

Bons Códigos!

Tags: , , , , ,


jan 18 2010

JavaServer Faces 2.0 na Prática – Parte 1

Category: JSF 2.0Edson Gonçalves @ 1:06

Olá, tudo bom? Como vão vocês?
Este artigo é o primeiro de uma série ao qual vou ensiná-los a trabalhar com o JavaServer Faces 2.0. Dúvidas e críticas são bem vindas.

Como Rodar o JSF 2.0 na sua máquina

A forma mais rápida de executar um aplicativo em JSF 2.0 é através do NetBeans IDE 6.8.  A versão que você deve baixar é a que possui o Sun GlassFish Enterprise Server v3 que, não por acaso, possui suporte ao Java Web e EE.

JavaServer Faces no NetBeans IDE – Criando um Projeto JSF 2.0

O NetBeans IDE, graças ao GlassFish v3, possui as bibliotecas necessárias para desenvolver uma aplicação JavaServer Faces.

Para criar um projeto com JavaServer Faces, siga os seguintes passos:

1. Vá ao menu File e clique no item New Project.

File > New Project

Figura 1. Criando um novo projeto no NetBeans IDE

2. Na caixa de diálogo New Project selecione o item  Web em Categories e Web Application em Projects. Clique no botão Next.

Caixa de Diálogo New Project

Figura 2. Criando um projeto Web no NetBeans IDE

3. Na segunda etapa você define o nome do projeto, em Project Name, e a localização, em Project Location. Digite PrimProjJSF (uma abreviação de Primeiro Projeto JavaServer Faces, como sugestão no nome do projeto). Fique atento a localização dos arquivos em sua máquina. Se desejar mudar a localização de onde se encontra o projeto, clique no botão Browse e selecione um novo local. Clique no botão Next.

Nome do Projeto e Localização na Criação do Projeto no NetBeans IDE

Figura 3. Nome do Projeto e Localização

3. Na terceira etapa você vai manter o GlassFish v3 em Server, assim como manter o mesmo nome do projeto em Context Path. Clique no botão Next.

Seleção do Servidor de Aplicativos

Figura 4. Seleção do Servidor de Aplicativos

4. A última etapa é onde você escolhe o framework  JavaServer Faces. Na parte inferior, após selecionar o framework, surgirá duas abas: Libraries e Configuration. Em Libraries mantenha Use default library which comes with Server (JSF 2.0) .

Selecionando o Framework JSF 2.0

Figura 5. Selecionando o Framework JSF 2.0

5. Na aba Configuration, em  Servlet URL Pattern, mantenha como /faces/*, assim como deixe Facelets em Preferred Page Language (veremos sobre isso em outra parte). Clique no botão Finish para concluir.

Mapeando o Faces Servlet no Projeto

Figura 6. Mapeando o Faces Servlet no arquivo web.xml

O NetBeans IDE abrirá automaticamente uma página em JSF criada pelo assistente através do template existente.

Um primeiro contato com JavaServer Faces

Se você não tem base de conhecimento no JavaServer Faces, aqui será o seu princípio.  A idéia é modificar os arquivos configurados pelo NetBeans IDE.

Uma página simples

A primeira página de um projeto Web costuma ser chamada de index. No JSF 2.0, quando utilizamos o padrão de Facelets, esta página possui a extensão .xhtml, ficando  index.xhtml. No NetBeans basta substituir o conteúdo da página index.xhtml pelo mostrado na  Listagem 1.

Listagem 1 – A página index.xhtml

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html">
<h:head>
<title>Uma simples página JSF</title>
</h:head>
<h:body>
<h:form>
<h:outputText value="Exemplo Simples" />
</h:form>
</h:body>
</html>

O diretório WEB-INF

No diretório WEB-INF encontramos o arquivo web.xml (deployment descriptor) padrão, contendo as adições mostradas na Listagem 2.

Listagem 2 – O arquivo web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>faces/index.xhtml</welcome-file>
</welcome-file-list>
</web-app>

O elemento <servlet-class /> declara javax.faces.webapp.FacesServlet fazendo com que este seja carregado inicialmente. O Servlet é mapeado no contexto pelo elemento <url-pattern /> para que as páginas da aplicação tenham o prefixo /faces/.

Nota: Embora na versão com Eclipse apareça o arquivo faces-config.xml, utilizado até a versão 1.2, na versão do JSF 2.0 não é obrigatório.

Você também pode configurar, para um aplicativo JSF, alguns parâmetros específicos no elemento <context-param />, como no trecho a seguir:

<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>client</param-value>
</context-param>
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Production</param-value>
</context-param>

A seguir você tem a Tabela 1 com alguns parâmetros e sua explicação:

Tabela 1 – Parâmetros de configurações de um projeto JSF no web.xml

Parâmetro Descrição
javax.faces.CONFIG_FILES Define uma lista delimitada por vírgulas com caminhos relativos de  contextos de configurações JSF em que a aplicação  irá procurar.
javax.faces.DEFAULT_SUFFIX Permite definir uma lista de sufixos (ex.: .xhtml, .jsf) que serão utilizadas pelo framework para ler páginas com conteúdo JSF.
javax.faces.LIFECYCLE_ID Identifica a instância do ciclo de vida a ser utilizado durante o processamento de  requisições JSF.
javax.faces.STATE_SAVING_METHOD Define a localização em que o estado é salvo.  Neste caso temos dois: server (padrão) que tipicamente salva em HttpSession e client que salva como campos ocultos na subsequente submissão do formulário.
javax.faces.PROJECT_STAGE Descreve como a aplicação JSF está em seu ciclo de vida no desenvolvimento de software, podendo conter os seguintes valores:  Development, UnitTest, SystemTest ou Production. Esta informação poderá ser usada por uma implementação JSF cachear recursos de modo que haja uma melhora no desempenho em produção, por exemplo.
javax.faces.DISABLE_FACELET_JSF_VIEWHANDLER Desabilita o Facelets (padrão) como Linguagem de Declaração de Página (Page Declaration Language – PDL) se colocado como true em seu valor.
javax.faces.LIBRARIES Interpreta cada arquivo encontrado na lista, separada por vírgula, de caminhos como uma biblioteca de tags Facelets.

Executando o projeto de exemplo

No NetBeans é mais simples, pois o projeto considerado principal (main) já está ativo, sendo necessário apenas ir ao menu Run>Run Main Project.

Executando o Projeto

Figura 7. Executando o Projeto no NetBeans IDE

Resultado é uma página JSF renderizada no Browser como mostrado na Figura abaixo.

Resultado da página JSF renderizada

Figura 8. Resultado da página JSF renderizada no Browser

Tags: , , ,


jan 17 2010

Olá, mundo!

Category: InicioEdson Gonçalves @ 7:47

Pessoal, definitivamente vou começar meu blog para ajudá-los em vários assuntos, nos quais abordarei:

  • Java para desenvolvimento Desktop
  • Java para desenvolvimento Web
  • Linux e Unix (comandos, programação, instalação)
  • Ruby
  • Python
  • E qualquer outro assunto relacionado a programação

Nos veremos mais ao longo dos meus posts.

E se não nos vermos, bons Códigos!