Demoiselle Tutorial...

27
Demoiselle Tutorial Documentation Release 1.0.0 Demoiselle Framework January 29, 2010

Transcript of Demoiselle Tutorial...

Page 1: Demoiselle Tutorial Documentationdemoiselle.sourceforge.net/tutorial/sphinx/latex/DemoiselleTutorial.pdf · Compilador Java (JDK) 1.5.0_17* Compilação dos projetos Eclipse Ganymede

Demoiselle Tutorial DocumentationRelease 1.0.0

Demoiselle Framework

January 29, 2010

Page 2: Demoiselle Tutorial Documentationdemoiselle.sourceforge.net/tutorial/sphinx/latex/DemoiselleTutorial.pdf · Compilador Java (JDK) 1.5.0_17* Compilação dos projetos Eclipse Ganymede
Page 3: Demoiselle Tutorial Documentationdemoiselle.sourceforge.net/tutorial/sphinx/latex/DemoiselleTutorial.pdf · Compilador Java (JDK) 1.5.0_17* Compilação dos projetos Eclipse Ganymede

CONTENTS

1 Arquitetura 31.1 Laboratório – Arquitetura e Configuração . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2 Persistência 132.1 Laboratório – Persistência . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

3 Indices and tables 23

i

Page 4: Demoiselle Tutorial Documentationdemoiselle.sourceforge.net/tutorial/sphinx/latex/DemoiselleTutorial.pdf · Compilador Java (JDK) 1.5.0_17* Compilação dos projetos Eclipse Ganymede

ii

Page 5: Demoiselle Tutorial Documentationdemoiselle.sourceforge.net/tutorial/sphinx/latex/DemoiselleTutorial.pdf · Compilador Java (JDK) 1.5.0_17* Compilação dos projetos Eclipse Ganymede

Demoiselle Tutorial Documentation, Release 1.0.0

Contents:

CONTENTS 1

Page 6: Demoiselle Tutorial Documentationdemoiselle.sourceforge.net/tutorial/sphinx/latex/DemoiselleTutorial.pdf · Compilador Java (JDK) 1.5.0_17* Compilação dos projetos Eclipse Ganymede

Demoiselle Tutorial Documentation, Release 1.0.0

2 CONTENTS

Page 7: Demoiselle Tutorial Documentationdemoiselle.sourceforge.net/tutorial/sphinx/latex/DemoiselleTutorial.pdf · Compilador Java (JDK) 1.5.0_17* Compilação dos projetos Eclipse Ganymede

CHAPTER

ONE

ARQUITETURA

1.1 Laboratório – Arquitetura e Configuração

Este laboratório tem por objetivo fixar os conceitos abordados no Módulo 01 do tutorial que trata as questões dearquitetura do Framework Demoiselle e orientar o processo de instalação e configuração do ambiente de desenvolvi-mento e da aplicações instanciadas por ele.

Caso esteja optando por não utilizar a ferramenta MAVEN, utilize o documentoDemoiselle-Tutorial-Modulo01-Arquitetura-Anexo-I, ao invés deste.

Para o bom andamento deste laboratório, espera-se que o ambiente do desenvolvedor contenha os seguintes softwares:

Software Versão ObjetivoCompilador Java (JDK) 1.5.0_17* Compilação dos projetosEclipse Ganymede 3.4.2 IDE para desenvolvimentoAspectJ Development Tools for Eclipse 1.6.4 Compilação de aspectosMaven Integration for Eclipse 0.9.7* Integração com projetos MavenServidor de Aplicação Tomcat 6.0.18 Servidor de aplicação WebDemoiselle Wizard 1.0.2 Gerador de código do Framework DemoiselleJboss Tools 3.0 Kit de acessórios para desenvolvimento

• Mínima

1.1.1 Objetivos

• Criar e configurar projetos via arquétipo Maven;

• Criar projeto do tutorial (projeto que terá continuidade nos demais laboratórios);

• Configurar projeto via Demoiselle Wizard.

3

Page 8: Demoiselle Tutorial Documentationdemoiselle.sourceforge.net/tutorial/sphinx/latex/DemoiselleTutorial.pdf · Compilador Java (JDK) 1.5.0_17* Compilação dos projetos Eclipse Ganymede

Demoiselle Tutorial Documentation, Release 1.0.0

Figura 1: Lista de update sites configurados no Eclipse

1.1.2 Exercício 1.0 – Instalação e configuração do Ambiente

1. Baixar e instalar a JDK JAVA (http://java.sun.com/javase/downloads/index_jdk5.jsp), também é possível utilizarJAVA 6, mas mantendo a compatibilidade com JAVA 5.

2. Baixar e instalar a IDE Eclipse Ganymede (http://www.eclipse.org/ganymede/).

3. Inicie o uso do Eclipse.

4. Já no interface do Eclipse utilize a opção de Software Updates: Menu-> Help-> Software Updates.

5. Utilize a opção Add Site... (figura 1) para instalar os seguintes softwares:

• AspectJ Development Tools for Eclipse (http://download.eclipse.org/tools/ajdt/34/update/)

• Maven Integration for Eclipse (http://m2eclipse.sonatype.org/update/)

• Demoiselle Wizard (http://demoiselle-wzd.sourceforge.net/updatesite/)

• JBoss Tools (http://download.jboss.org/jbosstools/updates/stable/)

1.1.3 Exercício 1.1 – Arquétipo Demoiselle

1. Configuração do repositório Maven

4 Chapter 1. Arquitetura

Page 9: Demoiselle Tutorial Documentationdemoiselle.sourceforge.net/tutorial/sphinx/latex/DemoiselleTutorial.pdf · Compilador Java (JDK) 1.5.0_17* Compilação dos projetos Eclipse Ganymede

Demoiselle Tutorial Documentation, Release 1.0.0

Abra o Eclipse.

A primeira vez que plugin do Eclipse (m2) é instalado, o repositório local é criado na pasta .m2, que fica na Pasta doUsuário (USER_HOME). No Windows, normalmente fica em “C:Documents and Settings$USER_HOME.m2”; noLinux, em “/home/$USER_HOME/.m2/”).

Dica: A pasta .m2 é protegida, portanto pode não estar visível por padrão. Para acessá-la, se estiver numa máquinaWindows, configure a exibição de arquivos ocultos. No Linux, utilize as teclas Ctrl+H para exibir e esconder arquivosocultos.

No seu repositório local ($USER_HOME/.m2) crie o arquivo archetype-catalog.xml e copie o conteúdo abaixo:

<?xml version="1.0" encoding="UTF-8"?><archetype-catalog>

<archetypes><archetype>

<groupId>br.gov.component.demoiselle.archetypes</groupId><artifactId>demoiselle-archetype-webapp-sample</artifactId><version>1.0.0</version><repository>

http://demoiselle.sourceforge.net/repository/release</repository>

</archetype></archetypes>

</archetype-catalog>

1. Criando um novo projeto

Volte ao Eclipse é acione o menu: File→ New→ Project...

Selecione a opção Maven Project (figura 2):

1.1. Laboratório – Arquitetura e Configuração 5

Page 10: Demoiselle Tutorial Documentationdemoiselle.sourceforge.net/tutorial/sphinx/latex/DemoiselleTutorial.pdf · Compilador Java (JDK) 1.5.0_17* Compilação dos projetos Eclipse Ganymede

Demoiselle Tutorial Documentation, Release 1.0.0

Figura 2: Seleção de projeto Maven

Na próxima tela é possível configurar o local onde o projeto será criado. Mantenha sua tela conforme a figura 3 paraque o projeto seja criado dentro do Workspace padrão.

6 Chapter 1. Arquitetura

Page 11: Demoiselle Tutorial Documentationdemoiselle.sourceforge.net/tutorial/sphinx/latex/DemoiselleTutorial.pdf · Compilador Java (JDK) 1.5.0_17* Compilação dos projetos Eclipse Ganymede

Demoiselle Tutorial Documentation, Release 1.0.0

Figura 3: Criação de um novo projeto Maven a partir de arquétipo

• Na tela seguinte (figura 4) são exibidos todos os arquétipos cadastros no archetype-catalog.xml;

• Selecione no campo Catalog a opção: Default Local;

• Selecione a última versão do arquétipo demoiselle (demoiselle-archetype-webapp-sample).

1.1. Laboratório – Arquitetura e Configuração 7

Page 12: Demoiselle Tutorial Documentationdemoiselle.sourceforge.net/tutorial/sphinx/latex/DemoiselleTutorial.pdf · Compilador Java (JDK) 1.5.0_17* Compilação dos projetos Eclipse Ganymede

Demoiselle Tutorial Documentation, Release 1.0.0

Figura 4: Configuração do catálogo local de arquétipos Maven

Vá à próxima tela.

Informe os dados do seu projeto.

• Group Id: representa a identificação da organização;

• Artifact Id: representa o nome do projeto;

• Version: versão do projeto;

• Package: pacote raiz da aplicação.

8 Chapter 1. Arquitetura

Page 13: Demoiselle Tutorial Documentationdemoiselle.sourceforge.net/tutorial/sphinx/latex/DemoiselleTutorial.pdf · Compilador Java (JDK) 1.5.0_17* Compilação dos projetos Eclipse Ganymede

Demoiselle Tutorial Documentation, Release 1.0.0

Figura 5: Parâmetros do projeto Maven

Acione o botão Finish para iniciar a criação do projeto.

Seu projeto deverá ser criado conforme estrutura da figura 6:

1.1. Laboratório – Arquitetura e Configuração 9

Page 14: Demoiselle Tutorial Documentationdemoiselle.sourceforge.net/tutorial/sphinx/latex/DemoiselleTutorial.pdf · Compilador Java (JDK) 1.5.0_17* Compilação dos projetos Eclipse Ganymede

Demoiselle Tutorial Documentation, Release 1.0.0

Figura 6: Estrutura de pacotes do projeto escola

O Arquétipo Maven constrói uma aplicação JEE compatível com os seguintes componentes/frameworks:

• JSF Api 1.2.08

• RichFaces 3.1.2

• Weblets Api 1.1

• MyFaces Tomahawk 1.1.7

10 Chapter 1. Arquitetura

Page 15: Demoiselle Tutorial Documentationdemoiselle.sourceforge.net/tutorial/sphinx/latex/DemoiselleTutorial.pdf · Compilador Java (JDK) 1.5.0_17* Compilação dos projetos Eclipse Ganymede

Demoiselle Tutorial Documentation, Release 1.0.0

• JSF-Facelets 1.1.14

• Postgresql 8.0-318

• JasperReports 3.1.0

1.1. Laboratório – Arquitetura e Configuração 11

Page 16: Demoiselle Tutorial Documentationdemoiselle.sourceforge.net/tutorial/sphinx/latex/DemoiselleTutorial.pdf · Compilador Java (JDK) 1.5.0_17* Compilação dos projetos Eclipse Ganymede

Demoiselle Tutorial Documentation, Release 1.0.0

12 Chapter 1. Arquitetura

Page 17: Demoiselle Tutorial Documentationdemoiselle.sourceforge.net/tutorial/sphinx/latex/DemoiselleTutorial.pdf · Compilador Java (JDK) 1.5.0_17* Compilação dos projetos Eclipse Ganymede

CHAPTER

TWO

PERSISTÊNCIA

2.1 Laboratório – Persistência

Este laboratório tem por objetivo fixar os conceitos da camada de persistência do Framework Demoiselle e orientaro processo de configuração das aplicações.

2.1.1 Objetivos

• Configurar a camada de Persistência através do Demoiselle Wizard utilizando JPA.

• Criar a camada de persistência da aplicação Escola.

– Interfaces DAO;

– Implementações DAO;

– Filtros de Consulta;

• Testar o funcionamento da camada de persistência.

2.1.2 Exercício 2.1 – Configuração do Projeto

1. Este laboratório utilizará o projeto escola criado no laboratório anterior.

2. Clique com o botão direito sob o projeto a acione a opção Demoiselle -> Configurar Projeto.

Figura 1: Configurar Projeto

1. Na guia JPA, você poderá adicionar, alterar ou remover suas Persistence Units. Para incluir uma PersistenceUnit, clique no botão adicionar.

13

Page 18: Demoiselle Tutorial Documentationdemoiselle.sourceforge.net/tutorial/sphinx/latex/DemoiselleTutorial.pdf · Compilador Java (JDK) 1.5.0_17* Compilação dos projetos Eclipse Ganymede

Demoiselle Tutorial Documentation, Release 1.0.0

Figura 2: Configurar Persistence Unit

Para incluir uma Persistence Unit, preencha os seguintes campos:

Obs.: Este tutorial utilizará como exemplo o HypersonicSQL.

• Nome: EscolaPU

• Provider: org.hibernate.ejb.HibernatePersistence

• Tipo: Resource Local

• Data Source: Não vamos usar JNDI

• Propriedades:

Key Valuehibernate.dialect org.hibernate.dialect.HSQLDialecthibernate.show_sql truehibernate.format_sql falsehibernate.hbm2ddl.auto updatehibernate.connection.driver_class org.hsqldb.jdbcDriverhibernate.connection.url jdbc:hsqldb:.hibernate.connection.username sahibernate.connection.passwordhibernate.use_sql_comments false

1. Clique no botão Salvar e caso não queira adicionar nenhuma outra Persistence Unit clique no botão Finish.O Wizard irá configurar o arquivo persistence.xml na pasta resources/META-INF do projeto con-forme figura abaixo:

14 Chapter 2. Persistência

Page 19: Demoiselle Tutorial Documentationdemoiselle.sourceforge.net/tutorial/sphinx/latex/DemoiselleTutorial.pdf · Compilador Java (JDK) 1.5.0_17* Compilação dos projetos Eclipse Ganymede

Demoiselle Tutorial Documentation, Release 1.0.0

Figura 3: Persistence.xml

1. Adicione a linha framework.demoiselle.persistence.default_persistence_unit=EscolaPUao final do arquivo demoiselle.properties.

2. Adicione a dependência do HSQLDB versão 1.8.0.1 no arquivo pom.xml da aplicação (logo após a tag<profiles>) conforme abaixo:

<dependencies>...<dependency>

<groupId>hsqldb</groupId><artifactId>hsqldb</artifactId><version>1.8.0.1</version>

</dependency>...

</dependencies>

2.1.3 Exercício 2.2 – Desenvolvimento da camada de persistência

Pacote Bean

1. No pacote br.gov.demoiselle.escola.bean Implemente o Pojo de Aluno conforme abaixo:

package br.gov.demoiselle.escola.bean;

import java.util.ArrayList;import java.util.Date;import java.util.HashSet;import java.util.List;import java.util.Set;import javax.persistence.Entity;import javax.persistence.SequenceGenerator;import javax.persistence.Table;import javax.persistence.Column;import javax.persistence.FetchType;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.Temporal;import javax.persistence.TemporalType;

2.1. Laboratório – Persistência 15

Page 20: Demoiselle Tutorial Documentationdemoiselle.sourceforge.net/tutorial/sphinx/latex/DemoiselleTutorial.pdf · Compilador Java (JDK) 1.5.0_17* Compilação dos projetos Eclipse Ganymede

Demoiselle Tutorial Documentation, Release 1.0.0

import javax.persistence.CascadeType;import javax.persistence.OneToMany;import javax.persistence.GenerationType;import br.gov.framework.demoiselle.core.bean.IPojo;

@Entity@Table(name="aluno")@SequenceGenerator(name="AlunoSequence", sequenceName="aluno_seq", allocationSize=1)public class Aluno implements IPojo {

private static final long serialVersionUID = 1L;

@Id @GeneratedValue(generator="AlunoSequence", strategy=GenerationType.SEQUENCE)@Column(name="id_aluno")private Long id;

@Column(name="nome", length=100)private String nome;

@Column(name="pai", length=100)private String pai;

@Column(name="mae", length=100)private String mae;

@Column(name="nascimento")@Temporal(value=TemporalType.DATE)private Date nascimento;

@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY)private Set<Endereco> enderecos;

public Aluno() {enderecos = new HashSet<Endereco>();

}

public Aluno(long id) {this();this.id = id;

}

public Long getId() { return id;}

public void setId(Long id) { this.id = id;}

public String getNome() {return nome;}

public void setNome(String nome) {this.nome = nome;}

public String getPai() {return pai;}

public void setPai(String pai) {this.pai = pai;}

public String getMae() {return mae;}

public void setMae(String mae) {this.mae = mae;}

16 Chapter 2. Persistência

Page 21: Demoiselle Tutorial Documentationdemoiselle.sourceforge.net/tutorial/sphinx/latex/DemoiselleTutorial.pdf · Compilador Java (JDK) 1.5.0_17* Compilação dos projetos Eclipse Ganymede

Demoiselle Tutorial Documentation, Release 1.0.0

public Date getNascimento() {return nascimento;}

public void setNascimento(Date nascimento) {this.nascimento = nascimento;}

public Set<Endereco> getEnderecos() {return enderecos;

}

public List<Endereco> getListaEndereco() {return new ArrayList<Endereco>(enderecos);

}

public void setEnderecos(Set<Endereco> enderecos) {this.enderecos = enderecos;

}

}

1. No mesmo pacote implemente o Pojo de Endereço:

package br.gov.demoiselle.escola.bean;

import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.FetchType;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;import javax.persistence.JoinColumn;import javax.persistence.ManyToOne;import javax.persistence.SequenceGenerator;import javax.persistence.Table;import br.gov.component.demoiselle.common.pojo.extension.Description;import br.gov.component.demoiselle.common.pojo.extension.EqualsField;import br.gov.component.demoiselle.common.pojo.extension.PojoExtension;import br.gov.framework.demoiselle.core.bean.IPojo;

@Entity@Table(name="endereco")@SequenceGenerator(name="EnderecoSequence", sequenceName="Endereco_seq", allocationSize=1)public class Endereco extends PojoExtension implements IPojo {

private static final long serialVersionUID = 1L;

@EqualsField@Id @GeneratedValue(generator="EnderecoSequence", strategy=GenerationType.SEQUENCE)@Column(name="id_endereco")private Long id;

@EqualsField@Description@Column(name="logradouro", length=100)private String logradouro;@Description@Column(name="numero", length=100)private String numero;

@Description

2.1. Laboratório – Persistência 17

Page 22: Demoiselle Tutorial Documentationdemoiselle.sourceforge.net/tutorial/sphinx/latex/DemoiselleTutorial.pdf · Compilador Java (JDK) 1.5.0_17* Compilação dos projetos Eclipse Ganymede

Demoiselle Tutorial Documentation, Release 1.0.0

@Column(name="complemento", length=100)private String complemento;

@Description@Column(name="bairro", length=100)private String bairro;

@Description@Column(name="cep", length=100)private String cep;

@Column(name="municipio", length=100)private String municipio;

@Description@Column(name="tipo")private Integer tipo;

@Description@ManyToOne(fetch=FetchType.LAZY)@JoinColumn(name="aluno")private Aluno aluno;

public Endereco() {}

public Endereco(String logradouro, String numero, String complemento,String bairro, String cep, String Municipio, Integer tipo) {

super();this.logradouro = logradouro;this.numero = numero;this.complemento = complemento;this.bairro = bairro;this.cep = cep;this.municipio = Municipio;this.tipo = tipo;

}

public Long getId() {return id;

}

public void setId(Long id) {this.id = id;

}

public String getLogradouro() {return logradouro;

}

public void setLogradouro(String logradouro) {this.logradouro = logradouro;

}

public String getNumero() {return numero;

}

18 Chapter 2. Persistência

Page 23: Demoiselle Tutorial Documentationdemoiselle.sourceforge.net/tutorial/sphinx/latex/DemoiselleTutorial.pdf · Compilador Java (JDK) 1.5.0_17* Compilação dos projetos Eclipse Ganymede

Demoiselle Tutorial Documentation, Release 1.0.0

public void setNumero(String numero) {this.numero = numero;

}

public String getComplemento() {return complemento;

}

public void setComplemento(String complemento) {this.complemento = complemento;

}

public String getBairro() {return bairro;

}

public void setBairro(String bairro) {this.bairro = bairro;

}

public String getCep() {return cep;

}

public void setCep(String cep) {this.cep = cep;

}

public Integer getTipo() {return tipo;

}

public void setTipo(Integer tipo) {this.tipo = tipo;

}

public String getMunicipio() {return municipio;

}

public void setMunicipio(String Municipio) {this.municipio = Municipio;

}

public Aluno getAluno() {return aluno;

}

public void setAluno(Aluno aluno) {this.aluno = aluno;

}

}

1. Agora os beans foram criados será necessário fazer o mapeamento deles no arquivo persistence.xml. Paraisso clique com o botão direito em cima do projeto e em seguida clique em Demoiselle -> ConfigurarProjeto.

2.1. Laboratório – Persistência 19

Page 24: Demoiselle Tutorial Documentationdemoiselle.sourceforge.net/tutorial/sphinx/latex/DemoiselleTutorial.pdf · Compilador Java (JDK) 1.5.0_17* Compilação dos projetos Eclipse Ganymede

Demoiselle Tutorial Documentation, Release 1.0.0

Figura 4: Configurar Projeto

Na aba JPA, clique em cima da Persistence Unit criada com o nome de EscolaPU e em seguida clique em Editar.

Figura 5: Editar Persistence Unit

No lado direito da tela aparecerá as configurações feitas anteriormente e aparecerá também um botão chamadoAdicionar Pojo. Clique nesse botão.

20 Chapter 2. Persistência

Page 25: Demoiselle Tutorial Documentationdemoiselle.sourceforge.net/tutorial/sphinx/latex/DemoiselleTutorial.pdf · Compilador Java (JDK) 1.5.0_17* Compilação dos projetos Eclipse Ganymede

Demoiselle Tutorial Documentation, Release 1.0.0

Figura 6: Adicionar Pojo

Em seguida aparecerá as classes que já foram criadas. Selecione os dois beans (Aluno e Endereço) conforme a figuraabaixo e clique em Finish.

2.1. Laboratório – Persistência 21

Page 26: Demoiselle Tutorial Documentationdemoiselle.sourceforge.net/tutorial/sphinx/latex/DemoiselleTutorial.pdf · Compilador Java (JDK) 1.5.0_17* Compilação dos projetos Eclipse Ganymede

Demoiselle Tutorial Documentation, Release 1.0.0

Figura 7: Selecionar Pojos

Verifique que os dois beans foram mapeados no aquivo persistence.xml conforme abaixo:

<?xml version="1.0" encoding="UTF-8"?><persistence xmlns="http://java.sun.com/xml/ns/persistence"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/persistence persistence_1_0.xsd" version="1.0"><persistence-unit name="EscolaPU" transaction-type="RESOURCE_LOCAL">

<provider>org.hibernate.ejb.HibernatePersistence</provider><class>br.gov.sample.demoiselle.escola.bean.Aluno</class><class>br.gov.sample.demoiselle.escola.bean.Endereco</class><properties>

<property name="hibernate.connection.username" value="sa" /><property name="hibernate.connection.driver_class" value="org.hsqldb.jdbcDriver" /><property name="hibernate.format_sql" value="false" /><property name="hibernate.connection.password" value="" /><property name="hibernate.hbm2ddl.auto" value="update" /><property name="hibernate.use_sql_comments" value="false" /><property name="hibernate.show_sql" value="true" /><property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect" /><property name="hibernate.connection.url" value="jdbc:hsqldb:." />

</properties></persistence-unit>

</persistence>

...

22 Chapter 2. Persistência

Page 27: Demoiselle Tutorial Documentationdemoiselle.sourceforge.net/tutorial/sphinx/latex/DemoiselleTutorial.pdf · Compilador Java (JDK) 1.5.0_17* Compilação dos projetos Eclipse Ganymede

CHAPTER

THREE

INDICES AND TABLES

• Index

• Module Index

• Search Page

23