• Nenhum resultado encontrado

if992 15 Lista exercicios 10

N/A
N/A
Protected

Academic year: 2021

Share "if992 15 Lista exercicios 10"

Copied!
11
0
0

Texto

(1)

Universidade Federal de Pernambuco

Centro de Informática - Sistemas de Informação

IF992 - Programação 2 :: Lista de Exercícios 10

Prof. Vinicius Cardoso Garcia

Exercício 1 – Criação da classe Persistente POJO.

1. Este laboratório utilizará o projeto “cursohbm” criado no laboratório anterior.

2. No pacote src Implemente o Pojo de Aluno conforme abaixo:

import java.util.ArrayList; import java.util.Date; import java.util.HashSet; import java.util.List; import java.util.Set; public class Aluno {

private static final long serialVersionUID = 1L; private Long id;

private String nome; private String pai; private String mae; private Date nascimento; public Aluno() {

}

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;

(2)

this.mae = mae; }

public Date getNascimento() { return nascimento; }

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

} }

(3)

Criação dos arquivos hbm

3. Para cada Pojo, criaremos o seu respectivo mapeamento ORM do hiberante.

4. Na pasta src crie o arquivo Aluno.hbm.xml para o Pojo Aluno:

○ Clique com o botão direito sob JavaSource – Selecione o Menu New → Other→

Hibernate → Hibernate XML Mapping File , e clique next

Configure a criação do hbm conforme abaixo e clique next:

(4)

Incremente o “Aluno.hbm.xml” conforme exemplo abaixo

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC

"-//Hibernate/Hibernate Mapping DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping>

<class name="Aluno" table="aluno"> <id column="id_aluno" name="id" >

<generator class="increment" /> </id>

<property name="nome" type="string" length="100" /> <property name="pai" type="string" length="100" /> <property name="mae" type="string" length="100" /> <property name="nascimento" type="date" />

</class> </hibernate-mapping>

5. Associe os HBMs ao hibernate.cfg.xml.

○ Insira a linha destacada no arquivo hibernate.cfg.xml

<?xmlversion="1.0"encoding="UTF-8"?>

<!DOCTYPE hibernate-configuration PUBLIC

"-//Hibernate/Hibernate Configuration DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration>

<session-factory>

<property name="hibernate.connection.driver_class">org.hsqldb.jdbcDriver</property> <property

name="hibernate.connection.url">jdbc:hsqldb:hsql://127.0.0.1/escola</property> <property name="hibernate.connection.username">sa</property>

<property name="hibernate.dialect">org.hibernate.dialect.HSQLDialect</property> <property name="show_sql">true</property>

<property name="format_sql">true</property> <property name="hbm2ddl.auto">update</property>

<mapping resource="Aluno.hbm.xml"/>

</session-factory> </hibernate-configuration>

(5)

Implementação do DAO

6. Crie a classe AlunoDAO em default package: import org.hibernate.Session;

import org.hibernate.Transaction; public class AlunoDAO {

//Método responsável por inserir um aluno public void inserir(Aluno aluno) {

//Abrindo uma sessão

Session sessao = HibernateUtil.getSession(); //Iniciando uma transação

Transaction transaction = sessao.beginTransaction(); sessao.save(aluno);

transaction.commit(); sessao.close();

} }

Sua camada de acesso a dados está implementada com um método responsável por inserir um aluno. Nos próximos módulos iremos incrementar essa camada. A camada esta pronta para ser testada!

(6)

Exercício 2 – Execução e Testes

1. Para realizar os testes, utilizaremos o banco de dados HSQLDB disponível no

material de aula. (arquivo if992-15-Lista_exercicios_10-hsqldb.zip);

2. Inicie-o em modo servidor da seguinte forma:

● Se ambiente windows:

○ Execute a arquivo: ./hsqldb/run.bat

● Se ambiente linux:

○ Execute a arquivo: ./hsqldb/run.sh

● A console deverá permanecer aberta conforme figura abaixo:

3. Para testar a camada de persistência, criaremos uma classe TestCase AlunoDAOTest que testará as principais funções da classe AlunoDAO.

○ Clique com o botão direito sob a classe HibernateUtil – Selecione o Menu New →

Other→ Java→JUnit→ Junit Test Case.

○ Configure a criação do JUnit conforme abaixo:

(7)

○ Clique no botão Finish e aguarde a criação da classe de teste.

4. Para acessar os métodos estáticos da classe Assert do JUnit faça a seguinte

importação:

import static org.junit.Assert.*;

5. Crie uma instância de AlunoDAO na classe de Teste.

private AlunoDAO alunoDAO = new AlunoDAO();

6. Crie o seguinte test para testar a inclusão do aluno:

@Test

public void test_01_Inclusao() { Aluno obj_Aluno = new Aluno(); obj_Aluno.setNome("Aluno 01"); obj_Aluno.setNascimento(new Date()); obj_Aluno.setMae("Mae do aluno 01"); obj_Aluno.setPai("Pai do aluno 01"); alunoDAO.inserir(obj_Aluno); assertTrue(obj_Aluno.getId() >= 0); }

7. Rode o teste e verifique o resultado.

(8)

Exercício 3 – Criação da classe Persistente POJO.

1. Este laboratório utilizará o projeto “cursohbm” criado no laboratório anterior.

2. No pacote src Implemente o Pojo de Aluno conforme abaixo:

import java.util.Date; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.SequenceGenerator; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; @Entity @Table(name = "tb_pessoa")

@SequenceGenerator(name = "sq_pessoa", sequenceName = "sq_pessoa") public class Pessoa {

@Id

@GeneratedValue(strategy = GenerationType.AUTO, generator = "sq_pessoa") @Column(name = "id_pessoa")

private Long id;

@Column(name = "nome", length = 30, nullable = true) private String nome;

@Column(name = "ativo", nullable = true) protected Boolean ativo;

@Temporal(TemporalType.DATE)

@Column(name = "dt_criacao", nullable = true) private Date nascimento;

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 Date getNascimento() { return nascimento; }

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

}

public Boolean getAtivo() { return ativo; }

public void setAtivo(Boolean ativo) { this.ativo = ativo;

}

}

(9)

3. Associe a classe Pessoa ao mapeamento do hibernate.cfg.xml.

○ Insira a linha destacada

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC

"-//Hibernate/Hibernate Configuration DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration>

<session-factory> <property

name="hibernate.connection.driver_class">org.hsqldb.jdbcDriver</property> <property

name="hibernate.connection.url">jdbc:hsqldb:hsql://localhost/escola</property> <property name="hibernate.connection.username">sa</property>

<property name="hibernate.dialect">org.hibernate.dialect.HSQLDialect</property> <property name="show_sql">true</property>

<property name="format_sql">true</property> <property name="hbm2ddl.auto">update</property> <mapping class="Pessoa" />

</session-factory> </hibernate-configuration>

(10)

Implementação do DAO

4. Crie uma classe da acesso a dados (DAO) aos objetos pessoa chamado PessoaDAO em default package:

import org.hibernate.Session; import org.hibernate.Transaction; public class PessoaDAO {

/**

* Inclusao de Pessoas * @param pessoa */

public void inserir(Pessoa pessoa) {

//Obtendo uma sessao

Session sessao = HibernateUtil.getSession();

//Iniciando uma transacao

Transaction transaction = sessao.beginTransaction();

sessao.save(pessoa); transaction.commit(); sessao.close(); }

}

Sua camada de acesso a dados está implementada com um método responsável por inserir um aluno. Nos próximos módulos iremos incrementar essa camada. A camada esta pronta para ser testada!

(11)

Exercício 4 – Execução e Testes

1. Para testar a camada de persistência, criaremos uma classe TestCase PessoaDAOTest que testará as principais funções da classe PessoaDAO.

○ Clique com o botão direito sob a classe HibernateUtil – Selecione o Menu New →

Other→ Java→JUnit→ Junit Test Case.

2. Para acessar os métodos estáticos da classe Assert do JUnit faça a seguinte importação: import static org.junit.Assert.*;

3. Crie uma instância de AlunoDAO na classe de Teste. private PessoaDAO pessoaDAO = new PessoaDAO(); 4. Crie o seguinte test para testar a inclusão do aluno:

@Test

public void test01Inclusao() { Pessoa pessoa = new Pessoa(); pessoa.setNome(""); pessoa.setNascimento(new Date()); pessoa.setAtivo(true); pessoaDAO.inserir(pessoa); assertTrue(pessoa.getId() >= 0); }

Referências

Documentos relacionados

Revisado e Atualizado em 13/07/2016, entrando em vigor na data de sua publicação, bem como no “site” da FSJ.. O Material que não atenda às regras de organização (M.O.)

Esta foliação ocorre ao longo de faixas miloníticas, com espessura desde submilimétrica (Fig. 23) até métrica, nas quais é caracterizada pela orientação de ribbons

CONCLUSÕES: Há correlação positiva entre o IP neonatal e concentração de leptina materna em gestantes diabéticas usuárias de insulina; há correlação positiva entre

O principal objetivo deste Projeto de Doutoramento é compreender de que modo é que as tecnologias de informação móveis, relacionadas com o desenvolvi- mento das aplicações

falar e tardios para irar-se, pois a ira do homem não produz a justiça de Deus. • Duas maneira de Deus exercer

Quando o diálogo Expert Level Parameter aparecer, selecione Variable Selection, , então a seguinte caixa de diálogo aparecerá:... Este diálogo também pode ser acessado através

A importância deste trabalho dá-se pelo fato das disciplinas buscarem, conjuntamente, “estimular, nos alunos, o senso de preservação da memória social coletiva,

A fim de evitar ou, quando tal não for praticável, reduzir as emissões para o solo e para a água provenientes do armazenamento de estrume sólido, a MTD consiste em utilizar