Demoiselle Tutorial Documentation

Propaganda
Demoiselle Tutorial Documentation
Release 1.0.0
Demoiselle Framework
January 29, 2010
CONTENTS
1
Arquitetura
1.1 Laboratório – Arquitetura e Configuração . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
3
2
Persistência
2.1 Laboratório – Persistência . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
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 de
arquitetura do Framework Demoiselle e orientar o processo de instalação e configuração do ambiente de desenvolvimento e da aplicações instanciadas por ele.
Caso
esteja
optando
por
não
utilizar
a
ferramenta
MAVEN,
Demoiselle-Tutorial-Modulo01-Arquitetura-Anexo-I, ao invés deste.
utilize
o
documento
Para o bom andamento deste laboratório, espera-se que o ambiente do desenvolvedor contenha os seguintes softwares:
Software
Compilador Java (JDK)
Eclipse Ganymede
AspectJ Development Tools for Eclipse
Maven Integration for Eclipse
Servidor de Aplicação Tomcat
Demoiselle Wizard
Jboss Tools
Versão
1.5.0_17*
3.4.2
1.6.4
0.9.7*
6.0.18
1.0.2
3.0
Objetivo
Compilação dos projetos
IDE para desenvolvimento
Compilação de aspectos
Integração com projetos Maven
Servidor de aplicação Web
Gerador de código do Framework Demoiselle
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 utilizar
JAVA 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 do
Usuário (USER_HOME). No Windows, normalmente fica em “C:Documents and Settings$USER_HOME.m2”; no
Linux, 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áquina
Windows, configure a exibição de arquivos ocultos. No Linux, utilize as teclas Ctrl+H para exibir e esconder arquivos
ocultos.
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 para
que 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 orientar
o 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 Persistence
Unit, 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
hibernate.dialect
hibernate.show_sql
hibernate.format_sql
hibernate.hbm2ddl.auto
hibernate.connection.driver_class
hibernate.connection.url
hibernate.connection.username
hibernate.connection.password
hibernate.use_sql_comments
Value
org.hibernate.dialect.HSQLDialect
true
false
update
org.hsqldb.jdbcDriver
jdbc:hsqldb:.
sa
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 conforme 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=EscolaPU
ao 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
import
import
import
import
import
import
import
import
import
import
import
import
import
java.util.ArrayList;
java.util.Date;
java.util.HashSet;
java.util.List;
java.util.Set;
javax.persistence.Entity;
javax.persistence.SequenceGenerator;
javax.persistence.Table;
javax.persistence.Column;
javax.persistence.FetchType;
javax.persistence.GeneratedValue;
javax.persistence.Id;
javax.persistence.Temporal;
javax.persistence.TemporalType;
2.1. Laboratório – Persistência
15
Demoiselle Tutorial Documentation, Release 1.0.0
import
import
import
import
javax.persistence.CascadeType;
javax.persistence.OneToMany;
javax.persistence.GenerationType;
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
import
import
import
import
import
import
import
import
import
import
import
import
import
javax.persistence.Column;
javax.persistence.Entity;
javax.persistence.FetchType;
javax.persistence.GeneratedValue;
javax.persistence.GenerationType;
javax.persistence.Id;
javax.persistence.JoinColumn;
javax.persistence.ManyToOne;
javax.persistence.SequenceGenerator;
javax.persistence.Table;
br.gov.component.demoiselle.common.pojo.extension.Description;
br.gov.component.demoiselle.common.pojo.extension.EqualsField;
br.gov.component.demoiselle.common.pojo.extension.PojoExtension;
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. Para
isso clique com o botão direito em cima do projeto e em seguida clique em Demoiselle -> Configurar
Projeto.
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 chamado
Adicionar 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 figura
abaixo 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.jdbcDriv
<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
Download