demoiselle tutorial...
TRANSCRIPT
Demoiselle Tutorial DocumentationRelease 1.0.0
Demoiselle Framework
January 29, 2010
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
ii
Demoiselle Tutorial Documentation, Release 1.0.0
Contents:
CONTENTS 1
Demoiselle Tutorial Documentation, Release 1.0.0
2 CONTENTS
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
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
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
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
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
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
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
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
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
Demoiselle Tutorial Documentation, Release 1.0.0
12 Chapter 1. Arquitetura
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
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
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
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
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
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
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
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
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
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
CHAPTER
THREE
INDICES AND TABLES
• Index
• Module Index
• Search Page
23