Buscar

Desenvolva-Passo-a-Passo-Um-Sistema-Web-Utilizando-Java-Hibernate-e-JSP

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 265 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 265 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 265 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Benefrancis do Nascimento
SISTEMA WEB
1 
 
 
 
 
 
Neste material mostrarei passo a passo o 
desenvolvimento  de  uma  aplicação  web 
utilizando programação orientada a objeto 
com  Java  em  conjunto  com o  framework 
para  mapeamento  objeto  relacional 
Hibernate.  É  indicado  para  estudantes  e 
profissionais  que  queiram  aprender  Java 
para  web,  porém  que  procuram 
desenvolver  softwares  mais  próximos  do 
que o mercado  atualmente  exige.   Neste 
material  desenvolveremos  um  sistema 
para  controlar  um  petshop  contendo 
diversas  operações  que  interagem  com  
banco de dados. 
SISTEMA	
WEB	
Desenvolva	 passo	 a	 passo	
um	 sistema	 web	 utilizando	
Java,	Hibernate	e	JSP.	
Benefrancis do Nascimento 
Benefrancis do Nascimento
SISTEMA WEB
2 
 
 
 
Nota	do	Autor	
 
O material que o leitor tem em mãos, dirigido basicamente, mas não exlusivamente, a alunos 
de graduação e pós graduação em cursos de Ciencia da Computação e correlatos, tem como 
preocupação  fundamental  iniciá‐lo  no  desenvolvimento  de  aplicações  Java,  utilizando 
Hibernate em ambiente Web.  
O objetivo aqui é desenvolver passo a passo um sistema em Java que  interage com banco de 
dados  realcional  utilizando  o  framework  de  mapeamento  objeto  relacional  Hibernate.  Este 
sistema, futuramente, será encaminhado a testes de desempenho e segurança para que, em 
seguida, possa  ser evoluído. Dessa  forma,  convido você a participar deste projeto que,  com 
certeza,  contribuirá  com  os  seus  estudos  e  futuramente  você  será  capaz  de  repassar  este 
conhecimento para outras pessoas.  
Não  indico  a  utilização  do  código  fonte  deste  material  para  desenvolvimento  de  sistema 
comercial, pois aspectos de segurança nesta obra não foram abordados. Desta forma, não me 
responsabilizo por qualquer dano que possa causar a quem quer que seja. 
Criticas e  sugestões, com objetivo de alimentar o processo de melhoria contínua de minhas 
obras, são bem vindas. O contato deverá ser estabelecido pelos meios abaixo. 
e‐mail: 
benefrancis@gmail.com 
twitter: 
@Benefrancis 
Skype: 
Benefrancis.com 
Desejo a todos muito sucesso. 
 
Benefrancis do Nascimento 
Benefrancis do Nascimento
SISTEMA WEB
3 
 
 
 
 
 
 
 
Aos meus alunos do curso de Pós‐graduação em Desenvolvimento de Sistemas para Web da 
Faculdade Anhanguera – Campinas. 
Benefrancis do Nascimento
SISTEMA WEB
4 
 
 
Nota do Autor ............................................................................................................................ 2 
Configurando o ambiente ............................................................................................................. 8 
Acessando o Mysql .................................................................................................................... 9 
Criando o banco de dados do sistema ...................................................................................... 9 
Criando uma aplicação Java para  web no Netbeans .............................................................. 10 
Criando os pacotes da nossa aplicação ................................................................................... 17 
Criando as classes da camada de controle .................................................................................. 18 
A Classe Pessoa ....................................................................................................................... 19 
Métodos da classe pessoa que interagem com o banco de dados ......................................... 21 
Mapeando a Classe Pessoa ..................................................................................................... 22 
A Classe PF ............................................................................................................................... 27 
Mapeando a Classe PF ............................................................................................................. 27 
A Classe PJ ............................................................................................................................... 28 
Mapeando a Classe PJ ............................................................................................................. 29 
A Classe Telefone .................................................................................................................... 30 
Métodos da classe Telefone que interagem com o banco de dados ...................................... 30 
Mapeando a Classe Telefone .................................................................................................. 31 
A classe Endereco .................................................................................................................... 35 
Métodos da classe Endereco que interagem com o banco de dados ..................................... 35 
Mapeando a classe Endereco .................................................................................................. 36 
A classe DocReceita ................................................................................................................. 40 
Mapeando a classe DocReceita ............................................................................................... 40 
A classe CPF ............................................................................................................................. 43 
A classe CNPJ ........................................................................................................................... 44 
A classe Animal ........................................................................................................................ 47 
Benefrancis do Nascimento
SISTEMA WEB
5 
 
Métodos da classe Animal que interagem com o banco de dados ......................................... 47 
Mapeando a classe Animal ...................................................................................................... 48 
Informando ao Hibernate quais os atributos da classe animal que serão persistidos ........... 51 
A classe Cachorro .................................................................................................................... 53 
A classe Gato ........................................................................................................................... 54 
A classe abstrata Servico ......................................................................................................... 55 
Métodos da classe Servico que interagem com o banco de dados ........................................ 55 
Mapeando a Classe Servico ..................................................................................................... 57 
Informando ao Hibernate quais os atributos da classe Servico que serão persistidos ........... 58 
A classe Banho ......................................................................................................................... 60 
A classe Consulta ..................................................................................................................... 61 
A classe Tosa ........................................................................................................................... 62 
A classe Vacina ........................................................................................................................ 62 
Utilizando o Hibernate para criar as tabelas no banco de dados ............................................... 63 
Atualizando o arquivo hibernate.cfg.xml ................................................................................ 64 
Criando uma conexão com o hibernate .................................................................................. 65 
Criando uma classe para testar o funcionamento do Hibernate ............................................66 
Programando as classes DAO ...................................................................................................... 68 
Introdução ............................................................................................................................... 69 
Implementado os métodos da classe PessoaDAO .................................................................. 69 
Implementado os métodos da classe AnimalDAO .................................................................. 76 
Implementado os métodos da classe ServicoDAO .................................................................. 82 
Implementado os métodos da classe TelefoneDAO ............................................................... 89 
Implementado os métodos da classe EnderecoDAO .............................................................. 95 
Testando os métodos das classes do pacote DAO .................................................................... 101 
Salvando pessoa, telefone, endereço, animais e serviços. ................................................... 102 
Benefrancis do Nascimento
SISTEMA WEB
6 
 
Criando as páginas JSP .............................................................................................................. 106 
Mapa do site .......................................................................................................................... 107 
Criando diretórios necessários .............................................................................................. 107 
Iniciando a programação das páginas JSP ............................................................................. 109 
Importando as classes necessárias ........................................................................................ 109 
Codificando arquivos do diretório geral ................................................................................... 115 
Codificando arquivos do diretório cadastros ............................................................................ 120 
Codificando arquivos do diretório serviços ............................................................................... 155 
Codificando arquivos do diretório consultas ............................................................................ 173 
Considerações finais .................................................................................................................. 265 
 
 
Benefrancis do Nascimento
SISTEMA WEB
7 
 
 
Figura 1 ‐ Diagrama de classes do pacote controle
Benefrancis do Nascimento
SISTEMA WEB
8 
 
 
 
 
 
 
 
 
 
 
 
 
	 Configurando	o	ambiente	
Benefrancis do Nascimento
SISTEMA WEB
9 
 
Acessando	o	Mysql	
 
Iniciaremos a configuração do nosso ambiente de desenvolvimento, conectando com o Mysql. 
Para isso utilizaremos o HeidiSQL1. Conectamos com o usuário root em nossa máquina local. 
 
Figura 2 ‐ Conectando o Heidi SQL 
Criando	o	banco	de	dados	do	sistema	
 
Criaremos agora o nosso database. Para isso, clique com o botão da direita do mouse 
no Treeview root@127.0.0.1; abrirá um menu suspenso no qual você deverá acessar a 
opção Create New / Database. A tela representad na imagem abaixo será aberta. 
Preencha os dados conforme a imagem abaixo. 
                                                            
1 Disponível em: http://www.heidisql.com/ 
Benefrancis do Nascimento
SISTEMA WEB
10 
 
 
Figura 3 ‐ Criando o banco de dados com o nome estimacao 
Criando	uma	aplicação	Java	para		web	no	Netbeans	
 
Criaremos agora uma aplicação java para web no ide Netbeans2. Acesse o menu 
Arquivo / Novo projeto.  A configuração do projeto segue quatro passos que 
descreverei nas imagens a seguir.  
 
                                                            
2 Disponível em: http://netbeans.org/ 
Benefrancis do Nascimento
SISTEMA WEB
11 
 
 
Figura 4 ‐ Criando uma aplicação Java para web no Netbeans [1 º Passo ] 
 
O primeiro passo consiste na escolha do projeto. No nosso caso a categoria do projeto 
será java Web e o projeto será Aplicação web. 
 
 
Benefrancis do Nascimento
SISTEMA WEB
12 
 
 
Figura 5 ‐ Criando uma aplicação Java para web no Netbeans [2 º Passo ] 
No segundo passo demos um nome para o projeto. O nome escolhido foi Estimacao. 
 
Figura 6 ‐ Criando uma aplicação Java para web no Netbeans [3 º Passo ] 
Benefrancis do Nascimento
SISTEMA WEB
13 
 
No terceiro passo deveremos escolher o servidor – container para a nossa aplicação. 
Escolha o Apache Tomcat. Para a versão do java EE você deverá escolher a 5 ou 
superior. O caminho do projeto será sugerido pelo Netbeans. Aceite a sugestão. 
 
 
Figura 7 ‐ Criando uma aplicação Java para web no Netbeans [4 º Passo ] 
O quarto passo será dividido em duas etapas. A primeira é escolher os frameworks que 
desejaremos trabalhar em nossa aplicação. Escolha somente o Hibernate 3.x.x. Para 
conexão com banco de dados o hibernate trabalha com dialeto, desta maneira ele 
saberá tratar as particularidades do banco de dados escolhido. Configuraremos uma 
nova conexão com banco de dados. A segunda etapa é apresentada na imagem abaixo: 
Benefrancis do Nascimento
SISTEMA WEB
14 
 
 
Figura 8 ‐ Segunda etapa do 4º passo da configuração do projeto Java para web 
A imagem acima mostra como deverá ser configurada a conexão com o banco de dados. 
Preencha conforme a imagem, porém você deverá saber qual o usuário e senha do seu banco 
de dados Mysql. Após o preenchimento clique em ok para aparecer a tela de finalização da 
configuração do projeto (imagem a seguir). 
 
Benefrancis do Nascimento
SISTEMA WEB
15 
 
Figura 9 ‐ Tela de finalização da configuração do projeto 
O seu projeto já está configurado para trabalhar com java para web utilizando o 
framework Hibernate. 
O Netbeans exibirá a estrutura de diretórios  conforme imagem a seguir, porém para 
visualizar o conteúdo do arquivo hibernate.cfg.xml, você deverá clicar na aba XML do 
referido arquivo. 
Benefrancis do Nascimento
SISTEMA WEB
16 
 
Figura 10 ‐ o conteúdo do arquivo hibernate.cfg.xml criado pelo ide Netbeans 
 
 
 
Figura 11 ‐ Alteramos o arquivo hibernate.cfg.xml 
Realizamos a primeira alteração no arquivo hibernate.cfg.xml com o objetivo de que: 
1º. Exiba no console os comandos sql; 
Benefrancis do Nascimento
SISTEMA WEB
17 
 
2º. Que os comandos sql sejam formatados; 
3º. Informando o tamanho do pool de conexões permitidas; 
4º. E, por fim, que o hibernate tenha permissão de criar tabelas na nossa base de 
dados.  
Falta apenas informar neste arquivo quais serão as classes da nossa aplicação que 
serão mapeadas para persistirem no banco de dados, mas informaremos após a 
criação, codificação e mapeamento das mesmas. 
 
Criando	os	pacotes	da	nossa	aplicação	
 
A  nossa  aplicação  terá  três  camadas,  porém  apenas  dois  pacotes,  pois  a  camada  de 
apresentação será composta pelas páginas web que  já possuem diretório em nosso projeto. 
Veja imagem abaixo. 
 
Figura 12 ‐ Criando Pacotes: controle e modelo – A camada de visão será no diretório 
Páginas Web 
Cabe informar que apenas o arquivo hibernate.cfg.xml deverá permanecer no pacote padrão.
Benefrancis do Nascimento
SISTEMA WEB
18 
 
 
 
 
 
 
 
 
 
 
 
	
 
Criando	as	classes	da	camada	de	controle	
Benefrancis do Nascimento
SISTEMA WEB
19 
 
A	Classe	Pessoa	
 
 
Figura 13 ‐ Atributos da Classe abstrata Pessoa. 
 
No momento da  criação dos  atributos o Netbeans  sugere  a  criação das  classes. Por 
exemplo, ao digitar public Collection<Telefone> telefone o Netbeans sugere a criação 
da  classe  telefone.  Aconselho  que  criem  imediatamente  conforme  o  Netbeans  vai 
sugerindo,  porém  depois  façam  as  devidasalterações  visto  que,  por  exemplo,  ao 
digitar  public  DocReceita  docReceita  ele  sugere  a  criação  de  uma  classe,  mas 
conforme nosso diagrama UML, DocReceita é uma interface. Altere. 
 
 
Benefrancis do Nascimento
SISTEMA WEB
20 
 
 
Figura 14 ‐ Diretório após a criação das classes do pacote modelo 
Neste momento criei as classes DAO – Data Access Object ‐ Classes responsáveis pela 
camada de persistência na minha aplicação, mas sem nenhum código neste momento 
(apenas para podermos referenciá‐las nos métodos salvar, alterar, excluir e consultar 
nas  classes  do  pacote  controle).  Criaremos  também  uma  classe  para  testar  o 
funcionamento do Hibernate (detalharei estas classes mais adiante). 
 
 
 
 
 
 
Benefrancis do Nascimento
SISTEMA WEB
21 
 
Métodos	da	classe	pessoa	que	interagem	com	o	banco	de	dados	
A seguir os métodos autenticar, existe, salvar, consultar, alterar e excluir da classe Pessoa. 
Quando estiver incluindo os métodos abaixo na classe Pessoa o Netbeans irá sugerir a criação 
dos métodos na classe PessoaDAO. Aceite a sugestão. 
public Autenticavel autenticar(String usuario, String senha) { 
        return PessoaDAO.autenticar(usuario, senha); 
    } 
 
    public boolean existe(String email) { 
        return PessoaDAO.existe(email); 
    } 
 
    public boolean existe(DocReceita documento) { 
        return PessoaDAO.existe(documento); 
    } 
 
    static public boolean salvar(Pessoa p) { 
        return PessoaDAO.salvar(p); 
    } 
 
    static public ArrayList<Pessoa> consultar() { 
        return PessoaDAO.consultar(); 
    } 
 
    static public Pessoa consultar(int idPessoa) { 
        return PessoaDAO.consultar(idPessoa); 
Benefrancis do Nascimento
SISTEMA WEB
22 
 
    } 
 
    static public Collection<Pessoa> consultar(String nome) { 
        return PessoaDAO.consultar(nome); 
    } 
 
    static public boolean alterar(Pessoa p) { 
        return PessoaDAO.alterar(p); 
    } 
 
    static public boolean excluir(Pessoa p) { 
        return PessoaDAO.excluir(p); 
    } 
 
 
Mapeando	a	Classe	Pessoa	
 
Iniciaremos o mapeamento Objeto Relacional da classe pessoa 
 
Informando	que	a	Classe	Pessoa	dará	origem	a	objetos	que	serão	
persistidos	
 
Precisamos informar ao Hibernate que a classe pessoa dará origem a objetos que serão 
persistidos em banco de dados. Para isso utilizamos a seguinte anotação: 
@Entity 
@Inheritance(strategy = InheritanceType.JOINED) 
@DiscriminatorColumn(name = "tipo") 
Benefrancis do Nascimento
SISTEMA WEB
23 
 
As anotações acima deverão ser inseridas antes do nome da classe. Veja imagem abaixo: 
Figura 15 ‐ Informando ao Hibernate que a Classe Pessoa será persistida e a estratégia de Herança 
utilizada 
Ao digitar as anotações o Netbeans sugere algumas importações, você deverá escolher as 
importações conforme as linhas que vão de 5 a 8 na imagem acima. 
Informando	ao	Hibernate	qual	será	o	id	da	tabela		
 
O Netbeans ira sugerir a criação do id para hierarquia da classe, para criar o id – que será o id 
da tabela no banco de dados; insira o código abaixo antes do atributo idPessoa. Será 
necessário alterar de public para private o atributo idPessoa.  Não deixe de fazer as 
importações sugeridas pelo Netbeans, porém selecione sempre as que começam com 
javax.persistence 
 
    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private int idPessoa; 
 
Benefrancis do Nascimento
SISTEMA WEB
24 
 
Informando	ao	Hibernate	quais	os	atributos	da	classe	pessoa	que	serão	
persistidos	
Necessitamos informar ao Hibernate quais atributos serão persistidos no banco de dados. Para 
isso deverão incluir as anotações conforme imagem abaixo: 
 
 
 
Benefrancis do Nascimento
SISTEMA WEB
25 
 
 
Benefrancis do Nascimento
SISTEMA WEB
26 
 
Figura 16 ‐ Atributos da classe pessoa que serão persistidos 
Encapsulando	atributos	da	classe	Pessoa	
Para encapsular os campos da classe Pessoa  acesse o menú refatorar / encapsular campos. A 
tela abaixo será aberta. Selecione todos os campos e clique em refatorar. 
 
Figura 17 ‐ Encapsulando campos da classe Pessoa 
	
Criando	métodos	construtores	para	a	classe	Pessoa	
Para criar métodos construtores para a classe telefone coloque o cursor em qualquer parte do 
código  fonte  da  classe  Pessoa,  sugiro  que  seja  logo  depois  dos  atributos,  de  o  comando  [  
control + espaço    ]; abrirá o menú suspenso conforme a  imagem abaixo. Clique em cima do 
método com o nome da classe (o mesmo que selecionei na imagem). Repita a operação agora 
selecionando o método sem atributos. 
Benefrancis do Nascimento
SISTEMA WEB
27 
 
Figura 18 ‐ Criando método construtor para a classe Pessoa 
Verifiquem em nosso diagrama de classes que Pessoa é classe ansestral das classes PF e PJ 
(Pessoa Física e Pessoa Jurídica respectivamente). Criaremos abaixo essas classes: 
 
A	Classe	PF	
Iniciaremos a construção da classe que representará as Pessoas Físicas. 
 
 
 
Figura 19 ‐ A classe PF 
 
A classe PF herda os métodos e atributos da classe Pessoa, por este motivo o mapeamento 
desta classe é mais simples: bastará informar a estratégia de herança. Veja abaixo: 
 
Mapeando	a	Classe	PF	
Iniciaremos o mapeamento Objeto Relacional da classe PF. 
Informando que a Classe PF dará origem a objetos que serão persistidos 
Precisamos informar ao Hibernate que a classe PF dará origem a objetos que serão 
Benefrancis do Nascimento
SISTEMA WEB
28 
 
persistidos em banco de dados e que os objetos do tipo PF em nosso banco de dados possui 
identificador 1. Este é o valor que identifica que, dentre as classes filhas de Pessoa, o número 1 
será usado para PF. Veja a anotação: 
@Entity 
@Inheritance(strategy = InheritanceType.JOINED) 
@DiscriminatorValue("1") 
As anotações acima deverão ser inseridas antes do nome da classe. Veja imagem abaixo: 
 
 
 
Figura 20 ‐ Informando ao Hibernate que a Classe PF será persistida, a estratégia de Herança e o valor 
que a identifica entre as classes que são filhas da classe Pessoa 
A	Classe	PJ		
Iniciaremos a construção da classe que representará as Pessoas Jurídicas. 
 
 
 
Figura 21 ‐ A classe PJ 
Benefrancis do Nascimento
SISTEMA WEB
29 
 
 
A classe PJ, assim como a classe PF, herda os métodos e atributos da classe Pessoa, por este 
motivo o mapeamento desta classe é semelhante ao da classe PF. Assim como PF, bastará 
informar a estratégia de herança. Veja abaixo: 
Mapeando	a	Classe	PJ	
Iniciaremos o mapeamento Objeto Relacional da classe PJ. 
Informando que a Classe PJ dará origem a objetos que serão persistidos 
Precisamos informar ao Hibernate que a classe PJ dará origem a objetos que serão persistidos 
em banco de dados e que os objetos do tipo PJ em nosso banco de dados possui identificador 
"2". Este é o valor que identifica que, dentre as classes filhas de Pessoa, o número "2" será 
usado para PJ. Veja a anotação: 
@Entity 
@Inheritance(strategy = InheritanceType.JOINED) 
@DiscriminatorValue("2") 
As anotações acima deverão ser inseridas antes do nome da classe. Veja imagem abaixo: 
 
 
 
Figura 22 ‐ Informando ao Hibernate que a Classe PJ será persistida, a estratégia de Herança 
e o valor que a identifica entre as classes que são filhas da classe Pessoa 
 
Benefrancis do Nascimento
SISTEMA WEB
30 
 
A	Classe	Telefone	
 
Figura 23 ‐ Atributos da Classe Telefone 
 
Métodos	da	classe	Telefone	que	interagem	com	o	banco	de	dados	
 
Incluiremos os métodos salvar, consultar, alterar e excluir na classe Telefone. Esses métodos 
serão a ligação entre a classe Telefone e a classe telefoneDAO. Abaixo mostramos os métodos 
da classe Telefone. Obs: Quando estiver inserindo os métodos abaixo, o Netbeans irá sugerir a 
criaçãodos métodos na Classe TelefoneDAO. Aceite a sugestão. 
    public static boolean salvar(Telefone t) { 
        return TelefoneDAO.salvar(t); 
    } 
    public static boolean salvar(Pessoa p) { 
        return TelefoneDAO.salvar(p); 
    } 
    public static Telefone consultar(int idTelefone) { 
        return TelefoneDAO.consultar(idTelefone); 
Benefrancis do Nascimento
SISTEMA WEB
31 
 
    } 
 
    public static Collection<Telefone> consultar(Pessoa p) { 
        return TelefoneDAO.consultar(p); 
    } 
    public static boolean alterar(Telefone t) { 
        return TelefoneDAO.alterar(t); 
    } 
    public static boolean excluir(Telefone t) { 
        return TelefoneDAO.excluir(t); 
    } 
    public static boolean excluir(Pessoa p) { 
        return TelefoneDAO.excluir(p); 
    } 
 
 
Mapeando	a	Classe	Telefone	
 
Iniciaremos o mapeamento objeto relacional da classe Telefone. 
 
Informando	que	a	classe	Telefone	dará	origem	a	objetos	que	serão	
persistidos	
 
Para informar que a classe telefone dará origem a objetos que serão persistidos em banco de 
dados, basta apenas incluir a anotação @Entity antes do nome da classe. 
 
Benefrancis do Nascimento
SISTEMA WEB
32 
 
Informando	ao	Hibernate	qual	será	o	Id	da	tabela	telefone	
 
Para criar o id – que será o id da tabela no banco de dados; insira o código abaixo antes do 
atributo idTelefone. Não deixe de fazer as importações sugeridas pelo Netbeans, porém 
selecione sempre as que começam com javax.persistence. 
Figura 24 ‐ Informando ao Hibernate qual será o Id da tabela telefone 
Informando	ao	Hibernate	quais	os	atributos	da	classe	Telefone	que	
serão	persistidos	
 
Benefrancis do Nascimento
SISTEMA WEB
33 
 
Figura 25 ‐ Atributos da classe Telefone que serão persistidos 
Encapsule	os	atributos	da	classe	Telefone	
 
Para encapsular os campos da classe telefone acesse o menú refatorar / encapsular campos. A 
tela abaixo será aberta. Selecione todos os campos e clique em refatorar. 
Benefrancis do Nascimento
SISTEMA WEB
34 
 
 
Figura 26 ‐ Encapsulando os atributos da classe Telefone 
Crie	métodos	construtores	para	a	classe	Telefone	
Para criar os métodos construtores da classe telefone coloque o cursor em qualquer parte do 
código  fonte da  classe  telefone,  sugiro que  seja  logo depois dos  atributos, de o  comando  [  
control + espaço    ]; abrirá o menú suspenso conforme a  imagem abaixo. Clique em cima do 
método com o nome da classe (o mesmo que selecionei na imagem). Repita a operação agora 
selecionando o método sem atributos. 
 
Figura 27 ‐ Criando método construtor para a classe Telefone 
Benefrancis do Nascimento
SISTEMA WEB
35 
 
A	classe	Endereco	
 
Figura 28 ‐ Atributos da classe Endereco 
 
Métodos	da	classe	Endereco	que	interagem	com	o	banco	de	dados	
 
Incluiremos os métodos salvar, consultar, alterar e excluir na classe Endereco. Esses métodos 
serão a ligação entre a classe Endereco e a classe EnderecoDAO. Abaixo mostramos os 
métodos da classe Endereco. Obs: Quando estiver inserindo os métodos abaixo, o Netbeans irá 
sugerir a criação dos métodos na Classe EnderecoDAO. Aceite a sugestão. 
    public static boolean salvar(Endereco e) { 
        return EnderecoDAO.salvar(e); 
    } 
Benefrancis do Nascimento
SISTEMA WEB
36 
 
    public static boolean salvar(Pessoa p) { 
        return EnderecoDAO.salvar(p); 
    } 
    public static Endereco consultar(int idEndereco) { 
        return EnderecoDAO.consultar(idEndereco); 
    } 
    public static ArrayList<Endereco> consultar(Pessoa p) { 
        return EnderecoDAO.consultar(p); 
    } 
    public static boolean alterar(Endereco e) { 
        return EnderecoDAO.alterar(e); 
    } 
    public static boolean excluir(Endereco e) { 
        return EnderecoDAO.excluir(e); 
    } 
    public static boolean excluir(Pessoa p) { 
        return EnderecoDAO.excluir(p); 
    } 
	
	
	
Mapeando	a	classe	Endereco	
 
Iniciaremos o mapeamento objeto relacional da classe Endereco. 
 
Benefrancis do Nascimento
SISTEMA WEB
37 
 
Informando	que	a	classe	Endereco	dará	origem	a	objetos	que	serão	
persistidos	
 
Para informar que a classe Endereco dará origem a objetos que serão persistidos em banco de 
dados, basta apenas incluir a anotação @Entity antes do nome da classe. 
 
Informando	ao	Hibernate	qual	será	o	Id	da	tabela	endereco	
 
Para criar o id – que será o id da tabela no banco de dados; insira o código abaixo antes do 
atributo idEndereco. Não deixe de fazer as importações sugeridas pelo Netbeans, porém 
selecione sempre as que começam com javax.persistence. 
Figura 29 ‐ Informando ao Hibernate qual será o Id da tabela endereço 
Informando	ao	Hibernate	quais	os	atributos	da	classe	Endereco	que	
serão	persistidos	
 
Benefrancis do Nascimento
SISTEMA WEB
38 
 
Figura 30 ‐ Os atributos da classe Endereco que serão persistidos 
 
Benefrancis do Nascimento
SISTEMA WEB
39 
 
Encapsule	os	atributos	da	classe	Endereco	
 
Para encapsular os campos da classe endereco acesse o menú refatorar / encapsular campos. 
A tela abaixo será aberta. Selecione todos os campos e clique em refatorar. 
Figura 31 ‐ Encapsulando campos da classe endereço 
 
Crie	métodos	construtores	para	a	classe	Endereco	
Para criar métodos construtores para a classe endereço, coloque o cursor em qualquer parte 
do código fonte da classe Endereco, sugiro que seja logo depois dos atributos, de o comando [  
control + espaço    ]; abrirá o menú suspenso conforme a  imagem abaixo. Clique em cima do 
método com o nome da classe (o mesmo que selecionei na imagem). Repita a operação agora 
selecionando o método sem atributos. 
Benefrancis do Nascimento
SISTEMA WEB
40 
 
Figura 32 ‐ Métodos construtores para a classe Endereco 
A	classe	DocReceita	
 
Codificaremos agora a classe DocReceita.  
Figura 33 ‐ A interface DocReceita 
	
Mapeando	a	classe	DocReceita	
 
Iniciaremos o mapeamento objeto relacional da classe DocReceita. 
Benefrancis do Nascimento
SISTEMA WEB
41 
 
Informando	que	a	classe	DocReceita	dará	origem	a	objetos	que	serão	
persistidos	
 
Para informar que a classe DocReceita dará origem a objetos que serão persistidos em banco 
de dados, basta apenas incluir a anotação @Entity antes do nome da classe, porém docReceita 
será a classe mãe de CPF e CNPJ, desta forma será necessário informar qual a estratégia de 
herança que utilizaremos.  
 
@Entity 
@Inheritance(strategy = InheritanceType.JOINED) 
@DiscriminatorColumn(name = "tipo") 
Informando	ao	Hibernate	quais	os	atributos	da	classe	DocReceita	que	
serão	persistidos	
 
Benefrancis do Nascimento
SISTEMA WEB
42 
 
Figure 1 ‐ Atributos da classe DocReceita que serão persistidos 
Benefrancis do Nascimento
SISTEMA WEB
43 
 
A	classe	CPF	
 
Codificaremos agora a classe CPF. Esta classe implementa a Interface DocReceita. Portanto 
deverá possuir o método validar e getNumero. 
 
Figura 34 ‐ A classe CPF 
	
O	método	que	validará	o	CPF	
 
Abaixo apresento o método utilizado para calcular o dígito de um CPF. Na imagem acima ele 
está oculto, para melhor visualização. 
Benefrancis do Nascimento
SISTEMA WEB
44 
 
 
 
Figura 35 ‐ Método utilizado para calcular o dígito de um CPF. Deve estar dentro da classe CPF 
	
A	classe	CNPJ	
 
A classe CNPJ, assim como a classe CPF implementa a interface DocReceita, portanto também 
deverá possuir os métodos validar e getnumero. 
 
Benefrancis do Nascimento
SISTEMA WEB
45 
 
Figura 36 ‐ A classe CNPJ 
 
O	método	que	validará	o	CNPJ	
 
Abaixo apresento o método utilizado para calcular o dígito de um CNPJ. Na imagem acima ele 
está oculto, para melhor visualização. 
 
 
 
 
 
Benefrancis do NascimentoSISTEMA WEB
46 
 
 
 
Figura 37 ‐ Método utilizado para calcular o dígito de um CNPJ. Deve estar dentro da classe 
CNPJ. 
Benefrancis do Nascimento
SISTEMA WEB
47 
 
A	classe	Animal	
 
Iniciaremos a codificação da classe abstrata Animal. 
Figura 38 ‐ A classe Abstrata Animal 
 
Métodos	da	classe	Animal	que	interagem	com	o	banco	de	dados	
 
Incluiremos os métodos salvar, consultar, alterar e excluir na classe Animal. Esses métodos 
serão a ligação entre a classe Animal e a classe animalDAO. Abaixo mostramos os métodos da 
classe Animal. Obs: Quando estiver inserindo os métodos abaixo, o Netbeans irá sugerir a 
criação dos métodos na Classe AnimalDAO. Aceite a sugestão. 
    public static boolean salvar(Animal a) { 
        return AnimalDAO.salvar(a); 
    } 
    public static boolean salvar(Pessoa p) { 
Benefrancis do Nascimento
SISTEMA WEB
48 
 
        return AnimalDAO.salvar(p); 
    } 
    public static Animal consultar(int idAnimal) { 
        return AnimalDAO.consultar(idAnimal); 
    } 
    public static Collection<Animal> consultar() { 
        return AnimalDAO.consultar(); 
    } 
    public static Collection<Animal> consultar(Pessoa p) { 
        return AnimalDAO.consultar(p); 
    } 
    public static boolean alterar(Animal a) { 
        return AnimalDAO.alterar(a); 
    } 
    public static boolean excluir(Animal a) { 
        return AnimalDAO.excluir(a); 
    } 
    public static boolean excluir(Pessoa p) { 
        return AnimalDAO.excluir(p); 
    } 
	
Mapeando	a	classe	Animal	
 
Iniciaremos o mapeamento objeto relacional da classe Animal. 
 
Benefrancis do Nascimento
SISTEMA WEB
49 
 
Informando	que	a	classe	Animal	dará	origem	a	objetos	que	serão	
persistidos	
 
Precisamos informar ao Hibernate que a classe Animal dará origem a objetos que serão 
persistidos em banco de dados e qual será a estratégia para hierarquia. Para isso utilizamos as 
seguintes anotações: 
 
@Entity 
@Inheritance(strategy = InheritanceType.JOINED) 
@DiscriminatorColumn(name = "tipo") 
 
As anotações acima deverão ser inseridas antes do nome da classe. Veja imagem abaixo: 
Figura 39 ‐ informar ao Hibernate que a classe Animal dará origem a objetos que serão persistidos em 
banco de dados e qual será a estratégia para hierarquia 
 
 
 
 
Benefrancis do Nascimento
SISTEMA WEB
50 
 
Informando	ao	Hibernate	qual	será	o	Id	da	tabela	animal	
 
O Netbeans ira sugerir a criação do id para hierarquia da classe, para criar o id – que será o id 
da tabela no banco de dados; insira o código abaixo antes do atributo idAnimal. Não deixe de 
fazer as importações sugeridas pelo Netbeans, porém selecione sempre as que começam com 
javax.persistence 
 
    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private int idAnimal; 
Figura 40 ‐ A criação do id para hierarquia da classe 
 
 
 
 
 
 
 
Benefrancis do Nascimento
SISTEMA WEB
51 
 
Informando	ao	Hibernate	quais	os	atributos	da	classe	animal	que	
serão	persistidos	
 
Figura 41 ‐ Os atributos da classe animal que serão persistidos 
 
Benefrancis do Nascimento
SISTEMA WEB
52 
 
Encapsule	os	atributos	da	classe	Animal	
 
Para encapsular os campos da classe animal acesse o menú refatorar / encapsular campos. A 
tela abaixo será aberta. Selecione todos os campos e clique em refatorar. 
Figura 42 ‐ Encapsulando campos da classe Animal 
Crie	métodos	construtores	para	a	classe	Animal	
Para criar métodos construtores para a classe Animal, coloque o cursor em qualquer parte do 
código  fonte  da  classe  Animal,  sugiro  que  seja  logo  depois  dos  atributos,  de  o  comando  [  
control + espaço    ]; abrirá o menú suspenso conforme a  imagem abaixo. Clique em cima do 
método com o nome da classe (o mesmo que selecionei na imagem). Repita a operação agora 
selecionando o método sem atributos. 
Figura 43 ‐ Métodos construtores para a classe Animal 
Benefrancis do Nascimento
SISTEMA WEB
53 
 
A	classe	Cachorro	
 
Exibimos abaixo a classe Cachorro já com as devidas anotações e o método construtor. 
Figura 44 ‐ A classe Cachorro já com as devidas anotações e o método construtor. 
Benefrancis do Nascimento
SISTEMA WEB
54 
 
A	classe	Gato	
 
Exibimos abaixo a classe Gato já com as devidas anotações e o método construtor. 
Figura 45 ‐ A classe Gato já com as devidas anotações e o método construtor 
 
Benefrancis do Nascimento
SISTEMA WEB
55 
 
A	classe	abstrata	Servico	
 
Iniciaremos a codificação da classe abstrata Servico. 
Figura 46 ‐ A classe abstrata serviço 
	
	
Métodos	da	classe	Servico	que	interagem	com	o	banco	de	dados	
 
A seguir os métodos salvar, consultar, alterar e excluir da classe Servico. Quando estiver 
incluindo os métodos abaixo na classe Servico o Netbeans irá sugerir a criação dos métodos na 
classe ServicoDAO. Aceite a sugestão. 
Benefrancis do Nascimento
SISTEMA WEB
56 
 
public static boolean salvar(Servico s) { 
        return ServicoDAO.salvar(s); 
    } 
 
    public static boolean salvar(Animal a) { 
        return ServicoDAO.salvar(a); 
    } 
    public static Servico consultar(int idServico) { 
        return ServicoDAO.consultar(idServico); 
    } 
    public static Collection<Servico> consultar(Animal a) { 
        return ServicoDAO.consultar(a); 
    } 
    public static Collection<Servico> consultar() { 
        return ServicoDAO.consultar(); 
    } 
    public static boolean alterar(Servico s) { 
        return ServicoDAO.alterar(s); 
    } 
    public static boolean excluir(Servico s) { 
        return ServicoDAO.excluir(s); 
    } 
    public static boolean excluir(Animal a) { 
        return ServicoDAO.excluir(a); 
    } 
 
Benefrancis do Nascimento
SISTEMA WEB
57 
 
Mapeando	a	Classe	Servico	
 
Iniciaremos o mapeamento objeto relacional da classe abstrata Servico. 
Informando	que	a	classe	Servico	dará	origem	a	objetos	que	serão	
persistidos	
 
Precisamos informar ao Hibernate que a classe Servico dará origem a objetos que serão 
persistidos em banco de dados. Para isso utilizamos a seguinte anotação: 
@Entity 
@Inheritance(strategy = InheritanceType.JOINED) 
@DiscriminatorColumn(name = "tipo") 
As anotações acima deverão ser inseridas antes do nome da classe. Veja imagem abaixo: 
 
Figura 47 ‐ A classe Servico dará origem a objetos que serão persistidos em banco de dados 
Benefrancis do Nascimento
SISTEMA WEB
58 
 
Informando	ao	Hibernate	quais	os	atributos	da	classe	Servico	que	
serão	persistidos	
 
As constantes não serão mapeadas. 
 
Figura 48 ‐ Informando ao Hibernate quais os atributos da classe Servico que serão persistidos 
 
 
 
 
 
Benefrancis do Nascimento
SISTEMA WEB
59 
 
Encapsule	os	atributos	da	classe	Servico	
 
Para encapsular os campos da classe Servico acesse o menú refatorar / encapsular campos. A 
tela abaixo será aberta. Selecione todos os campos e clique em refatorar. 
Figura 49 ‐ Encapsulando campos da classe Servico 
Crie	métodos	construtores	para	a	classe	Servico	
Para criar métodos construtores para a classe Servico, coloque o cursor em qualquer parte do 
código  fonte  da  classe  Servico,  sugiro  que  seja  logo  depois  dos  atributos,  de  o  comando  [  
control + espaço    ]; abrirá o menú suspenso conforme a  imagem abaixo. Clique em cima do 
método com o nome da classe (o mesmo que selecionei na imagem). Repita a operação agora 
selecionando o método sem atributos. 
Benefrancis do Nascimento
SISTEMA WEB
60 
 
Figura 50 ‐ Métodos construtores para a classe Servico 
A	classe	Banho	
Abaixo o código e anotações da classe Banho 
Figure 2 ‐ A classe Banho 
Benefrancis do Nascimento
SISTEMA WEB
61 
 
A	classe	Consulta	
Abaixo o código e anotaçõesda classe Consulta 
Figure 3 ‐ A classe consulta 
Benefrancis do Nascimento
SISTEMA WEB
62 
 
A	classe	Tosa	
Abaixo o código e anotações da classe Tosa 
 
A	classe	Vacina	
Abaixo o código e anotações da classe Vacina 
 
Benefrancis do Nascimento
SISTEMA WEB
63 
 
 
 
 
 
 
 
 
 
 
 
 
 
Utilizando	o	Hibernate	para	criar	as	tabelas	no	banco	de	
dados	
Benefrancis do Nascimento
SISTEMA WEB
64 
 
Atualizando	o	arquivo	hibernate.cfg.xml	
 
Neste momento atualizaremos o arquivo hibernate.cfg.xml. Deveremos incluir informação 
sobre as classes que foram mapeadas em nossa aplicação Java. 
Abra o arquivo e inclua entre as tags <session‐factory> </session‐factory> o código abaixo: 
 
        <mapping class="br.com.benefrancis.controle.Pessoa" /> 
        <mapping class="br.com.benefrancis.controle.PF" /> 
        <mapping class="br.com.benefrancis.controle.PJ" /> 
 
        <mapping class="br.com.benefrancis.controle.DocReceita" /> 
        <mapping class="br.com.benefrancis.controle.CPF" /> 
        <mapping class="br.com.benefrancis.controle.CNPJ" /> 
 
        <mapping class="br.com.benefrancis.controle.Telefone" /> 
        <mapping class="br.com.benefrancis.controle.Endereco" /> 
 
        <mapping class="br.com.benefrancis.controle.Animal" /> 
        <mapping class="br.com.benefrancis.controle.Cachorro" /> 
        <mapping class="br.com.benefrancis.controle.Gato" /> 
 
        <mapping class="br.com.benefrancis.controle.Servico" /> 
        <mapping class="br.com.benefrancis.controle.Banho" /> 
        <mapping class="br.com.benefrancis.controle.Consulta" /> 
        <mapping class="br.com.benefrancis.controle.Tosa" /> 
        <mapping class="br.com.benefrancis.controle.Vacina" /> 
Benefrancis do Nascimento
SISTEMA WEB
65 
 
Criando	uma	conexão	com	o	hibernate	
 
Para obter conexões com o Hibernate criamos a classe ConexaoHibernate no pacote modelo. 
O código poderá ser visualizado na imagem abaixo: 
Figura 51 ‐  A classe ConexaoHibernate 
A classe ConexaoHibernate possui um bloco estático no qual por meio da variável 
sessionFactory capturamos as configurações inseridas no arquivo hibernate.cfg.xml. Criamos 
também um método estático getInstance() que retornará uma sessão. 
Benefrancis do Nascimento
SISTEMA WEB
66 
 
Criando	uma	classe	para	testar	o	funcionamento	do	Hibernate	
 
Criaremos a classe TestandoHibernate no pacote modelo. Esta classe será utilizada para testar 
o funcionamento do nosso sistema. A principio criaremos um método estático para gerar as 
tabelas no banco de dados. E um método main, pois neste momento poderemos executar o 
sistema para testar o funcionamento. 
Figura 52 ‐ Testando o funcionamento do Hibernate 
Podemos agora executrar este arquivo por meio do atalho [ shift + F6  ] . O console irá imprimir 
diversas informações e entre elas os comandos do SQL para criação das tabelas no banco de 
dados. Abaixo, segue o que foi imprimido: 
Benefrancis do Nascimento
SISTEMA WEB
67 
 
Figura 53 ‐ Saída do console da aplicação quando executamos o método gerarTabelas da classe 
TestandoHibernate 
 
Agora voltaremos para o HeidiSQL para verificar as tabelas criadas pela nossa aplicação: 
Figura 54 ‐ Verificando no HeidiSql as tabelas geradas 
Benefrancis do Nascimento
SISTEMA WEB
68 
 
 
 
 
 
 
 
 
 
 
 
 
 
Programando	as	classes	DAO	
Benefrancis do Nascimento
SISTEMA WEB
69 
 
Introdução	
 
Programaremos  os  métodos  das  classes  de  acesso  e  manipulação  dos  dados  de  nossa 
aplicação.  
Quando  estávamos  criando  os  métodos  salvar,  consultar,  alterar  e  excluir  das  classes  do 
pacote controle, o Netbeans nos sugeria criar os métodos nas classes DAO do pacote modelo. 
Caso tenha aceitado conforme orientei os métodos foram criados nas respectivas classes DAO. 
Porém  o  conteúdo  dos  métodos  lança  uma  exceção  dizendo  que  o  método  não  foi 
implementado. Veja a exceção abaixo: 
 
 
Figura 55 ‐ Exceção de método que não foi implementado 
Deveremos inserir o conteúdo dos métodos das classes DAO. E esta será a nossa atividade 
neste capitulo. Os códigos das classes DAO serão muito semelhantes aos métodos das outras 
classes de acesso e manipulação de dados. Vejam. 
 
Implementado	os	métodos	da	classe	PessoaDAO	
 
Para persistir e manipular os dados em nossa aplicação com segurança trabalharemos com o 
conceito de transação.  O hibernate possui o objeto Transaction para esse fim. Desta forma, 
em caso de erro durante o processamento a aplicação fará o rollback, mantendo assim nosso 
banco de dados integro. 
Toda comunicação nesses métodos dependerão de uma sessão com o hibernate, por esse 
motivo utilizaremos a variável session do tipo org.hibernate.Session.  
 
 
 
 
Benefrancis do Nascimento
SISTEMA WEB
70 
 
Salvar	
Neste método salvaremos uma pessoa no banco de dados. O método espera como parâmetro 
um objeto do tipo Pessoa. Poderemos enviar pessoas físicas e pessoas jurídicas, pois este é um 
clássico método polifórmico. 
Figura 56 ‐ Método salvar da classe PessoaDAO 
 
Para  salvar  uma  pessoa  no  banco  de  dados  utilizamos  polimorfismo  por  meio  de  método 
polifórmico. Repare que no método salvar o parâmetro esperado é do tipo Pessoa, entretanto 
se enviarmos uma PF ou PJ as informações serão salvas corretamente nas tabelas do banco de 
dados.  Outra  técnica  importante  da  orientação  a  objeto  empregada  nesta  classe  é  a 
sobrecarga de métodos presente no método consultar (veja a assinatura dos métodos). 
 
 
Benefrancis do Nascimento
SISTEMA WEB
71 
 
Consultar	pessoa	pelo	id	
Neste método consultaremos uma pessoa pelo id. Este método espera um inteiro como 
parâmetro. Retornará um objeto do tipo Pessoa. 
Figura 57 ‐ Consultando Pessoa pelo id 
 
 
 
 
Benefrancis do Nascimento
SISTEMA WEB
72 
 
Consultar	Todas	as	pessoas	
 
Usaremos a sobrecarga de métodos para criar mais uma opção de consulta. Agora 
consultaremos todas as pessoas cadastradas. 
Figura 58 ‐ Consultando todas as pessoas cadastradas 
Benefrancis do Nascimento
SISTEMA WEB
73 
 
Consultar	pessoa	pelo	nome	
 
Consultaremos pessoa pelo nome. Este método espera como parâmetro uma String e 
retornará uma coleção de objetos do tipo pessoa. 
Figura 59‐ Consultando pessoas pelo nome 
 
 
 
 
Benefrancis do Nascimento
SISTEMA WEB
74 
 
Alterando	pessoas	
 
Agora abordaremos o método alterar. Este método recebe um objeto do tipo pessoa como 
parâmetro e retorna verdadeiro; se a atualização for concretizada, ou falso caso aconteça 
alguma exceção. 
Figura 60 ‐ Alterando pessoa 
 
 
 
 
 
 
Benefrancis do Nascimento
SISTEMA WEB
75 
 
Excluindo	pessoas	
 
Codificaremos o método excluir. Este método recebe como parâmetro um objeto do tipo 
pessoa e retornará verdadeiro; se a transação concluir com sucesso, ou falso caso aconteça 
alguma exceção. 
Figura 61 ‐ Excluindo pessoas 
 
 
 
 
 
 
 
 
 
Benefrancis do Nascimento
SISTEMA WEB
76 
 
Implementado	os	métodos	da	classe	AnimalDAO	
 
Salvar	
 
Neste método salvaremos um animal no banco de dados. O método espera como parâmetro 
um objeto do tipo Animal. Poderemos enviar cachorros ou gatos, pois este é um clássico 
método polifórmico. 
Figura 62 ‐ Salvando animais 
 
 
 
 
Benefrancis do Nascimento
SISTEMA WEB
77 
 
Salvando	todos	os	animais	de	uma	pessoa	
 
Criamos um método para salvar todos os animais de uma pessoa. 
Figura 63 ‐ Salvando todos os animais de uma pessoa 
 
 
 
 
Benefrancis do Nascimento
SISTEMA WEB
78 
 
Consultando	animais	pelo	Id	
 
Codificaremos o método que consulta animal pelo id 
Figura 64 ‐ Consultando animais peloId 
 
 
 
 
 
Benefrancis do Nascimento
SISTEMA WEB
79 
 
 
Alterando	animais	
 
Codificaremos o método alterar da classe animalDAO. 
Figura 65 ‐ Alterando animal 
 
 
 
 
 
 
 
Benefrancis do Nascimento
SISTEMA WEB
80 
 
 
Excluindo	animal		
 
Abaixo o código do método excluir da classe AnimalDAO. 
Figura 66 ‐ Excluindo animal 
 
 
 
 
 
 
 
Benefrancis do Nascimento
SISTEMA WEB
81 
 
Excluindo	todos	os	animais	de	uma	pessoa	
 
Codificaremos um método para exclusão de todos os animais de uma pessoa. 
Figura 67 ‐ Excluindo todos os animais de uma pessoa 
 
 
 
 
Benefrancis do Nascimento
SISTEMA WEB
82 
 
Implementado	os	métodos	da	classe	ServicoDAO	
 
Iniciaremos agora a codificação dos métodos da classe ServicoDAO. 
 
Salvar	
 
Abaixo o método salvar da classe ServicoDAO. 
Figura 68 ‐ Salvando serviços 
 
 
 
 
Benefrancis do Nascimento
SISTEMA WEB
83 
 
Consultando	serviço	pelo	id	
 
Abaixo o código para consulta de serviço pelo id. 
Figura 69 ‐ Consultando serviço pelo id 
 
 
 
 
 
Benefrancis do Nascimento
SISTEMA WEB
84 
 
Salvando	todos	os	serviços	de	um	animal	
 
Codificaremos um método para salvar todos os serviços de um animal. 
Figura 70 ‐ Salvando todos os serviços de um animal 
 
 
 
 
Benefrancis do Nascimento
SISTEMA WEB
85 
 
Consultando	todos	os	serviços	de	um	animal	
 
Codificaremos o método que deverá retornar todos serviços realizados em um animal. 
Figura 71 ‐ Consultando todos serviços realizados em um animal 
 
 
 
 
 
 
Benefrancis do Nascimento
SISTEMA WEB
86 
 
Excluindo	todos	os	serviços	de	um	animal	
 
Codificaremos um método para que seja possível excluir todos os serviços de um animal. 
Figura 72 ‐ Excluindo todos os serviços de um animal 
 
 
 
 
Benefrancis do Nascimento
SISTEMA WEB
87 
 
Alterando	serviço	
 
Desenvolvendo método para alterar um serviço. 
 
Figura 73 ‐ Alterando serviço 
 
 
 
 
 
 
Benefrancis do Nascimento
SISTEMA WEB
88 
 
 
Excluindo	serviço	
 
Abaixo o código para exclusão de serviço 
Figura 74 ‐ Excluindo serviço 
 
Benefrancis do Nascimento
SISTEMA WEB
89 
 
Implementado	os	métodos	da	classe	TelefoneDAO	
 
Iniciaremos agora a codificação dos métodos da classe TelefoneDAO. 
 
salvar	
 
Figura 75 ‐ Salvando um telefone 
 
Benefrancis do Nascimento
SISTEMA WEB
90 
 
Consultando	telefone	pelo	Id	
Figura 76 ‐ Consultando telefone pelo id 
 
 
 
 
 
 
 
Benefrancis do Nascimento
SISTEMA WEB
91 
 
Consultando	todos	os	telefones	de	uma	pessoa	
 
O método abaixo prove a consulta de todos os telefones de uma pessoa. 
Figura 77 ‐ Consultando todos os telefones de uma pessoa 
 
 
 
 
 
 
 
Benefrancis do Nascimento
SISTEMA WEB
92 
 
Salvando	todos	os	telefones	de	uma	pessoa	
 
O método abaixo salva todos os telefones de uma pessoa 
Figura 78 ‐ Salvando todos os telefones de uma pessoa 
 
 
 
Benefrancis do Nascimento
SISTEMA WEB
93 
 
Excluindo	telefone	
 
O método abaixo exclui um telefone da base de dados 
Figura 79 ‐ Excluindo telefone 
 
 
 
 
 
 
 
Benefrancis do Nascimento
SISTEMA WEB
94 
 
Excluindo	todos	os	telefones	de	uma	pessoa	
 
O código abaixo exclui todos os telefones de uma pessoa 
Figura 80 ‐ Excluindo todos os telefones de uma pessoa 
 
 
 
 
Benefrancis do Nascimento
SISTEMA WEB
95 
 
Implementado	os	métodos	da	classe	EnderecoDAO	
 
Iniciaremos agora a codificação dos métodos da classe EnderecoDAO. 
 
Salvar	
 
O método abaixo salva um endereço no banco de dados 
Figura 81 ‐ Salvando todos os endereços de uma pessoa 
Benefrancis do Nascimento
SISTEMA WEB
96 
 
Consultando	endereço	pelo	Id	
 
O método abaixo consulta endereço pelo Id. 
Figura 82‐ Consultando endereço pelo id 
 
 
 
 
 
Benefrancis do Nascimento
SISTEMA WEB
97 
 
Consultando	todos	os	endereços	de	uma	pessoa	
 
O método abaixo consulta todos os endereços de uma pessoa. 
Figura 83 ‐ Consultando todos os endereços de uma pessoa 
 
 
 
 
 
 
 
 
Benefrancis do Nascimento
SISTEMA WEB
98 
 
Alterando	um	endereço	
 
Abaixo codificaremos um método para alterar endereço 
Figura 84 ‐ Alterando um endereço 
 
 
 
 
 
 
 
Benefrancis do Nascimento
SISTEMA WEB
99 
 
Excluindo	um	endereço	
 
O método abaixo exclui um endereço 
Figura 85 ‐ Excluindo endereço 
 
 
 
 
 
 
 
 
Benefrancis do Nascimento
SISTEMA WEB
100 
 
Excluindo	todos	os	endereços	de	uma	pessoa	
 
O método abaixo exclui todos os endereços de uma pessoa. 
Figura 86 ‐ Excluindo todos os endereços de uma pessoa 
 
 
 
 
Benefrancis do Nascimento
SISTEMA WEB
101 
 
 
 
 
 
 
 
 
 
 
 
 
 
Testando	os	métodos	das	classes	do	pacote	DAO	
Benefrancis do Nascimento
SISTEMA WEB
102 
 
Salvando	pessoa,	telefone,	endereço,	animais	e	serviços.	
 
Testaremos agora os métodos das classes do pacote DAO. Para isso incluiremos um método a 
classe TestandoHibernate.  
Neste método invocamos apenas o método salvar da classe Pessoa, porém todos os outros 
objetos a ela relacionados foram criados. 
Veja código abaixo: 
    private static void persistindo() throws Exception { 
        PF pf = new PF(); 
        pf.setNome("Benefrancis do Nascimento"); 
        pf.setEmail("benefrancis@gmail.com"); 
        pf.setSenha("root"); 
 
        DocReceita cpf = new CPF("24878891874"); 
        pf.setDocReceita(cpf); 
        cpf.setPessoa(pf); 
 
        Endereco end = new Endereco(); 
        end.setBairro("Jd Leni"); 
        end.setCep("05818250"); 
        end.setCidade("São Paulo"); 
        end.setLogradouro("Rua faustino Allende"); 
        end.setNumero("39"); 
        end.setUf("SP"); 
        end.setPessoa(pf); 
 
Benefrancis do Nascimento
SISTEMA WEB
103 
 
        Collection<Endereco> e = new ArrayList<Endereco>(); 
        e.add(end); 
        pf.setEndereco(e); 
 
        Telefone t = new Telefone(); 
        t.setDdd(11); 
        t.setNumero("8281‐6536"); 
        t.setPessoa(pf); 
 
        Collection<Telefone> tel = new ArrayList<Telefone>(); 
        tel.add(t); 
        pf.setTelefone(tel); 
 
        Animal a = new Cachorro(); 
        Date d = new Date(2000, 5, 15); 
        a.setDataNascimento(d); 
        a.setNome("Pluto"); 
        a.setRaca("Vira lata"); 
        a.setSexo('M'); 
        a.setObservacao("Cachorro muito sem vergonha!"); 
        a.setPessoa(pf); 
 
        Servico s = new Banho(); 
        Date diaBanho = new Date(2010, 11, 18); 
        s.setData(diaBanho); 
Benefrancis do Nascimento
SISTEMA WEB
104 
 
        s.setDescricao("Banho completo"); 
        s.setValor(20.95); 
        s.setAnimal(a); 
 
        Collection<Servico> serv = new ArrayList<Servico>(); 
        serv.add(s); 
        a.setServico(serv); 
 
        Collection<Animal> ani = new ArrayList<Animal>(); 
        ani.add(a); 
        pf.setAnimal(ani); 
 
        pf.salvar(pf); 
    } 
 
Verificaremos agora no HeidiSql se todos os campos das tabelas foram preenchidos 
corretamente. 
Para isso executaremos o seguinte comando: 
select Pessoa.*, Endereco.*, Animal.*, Servico.* from 
Pessoa left join Telefone on (Pessoa.idPessoa = Telefone.idPessoa) 
left join Endereco on (Pessoa.idPessoa = Endereco.idPessoa) 
left join Animal on (Pessoa.idPessoa = Animal.idPessoa) 
left join Servico on (Animal.idAnimal = Servico.idAnimal); 
 
Benefrancis do Nascimento
SISTEMA WEB
105 
 
 
Figura 87 ‐ Resultado da consulta dos dados gravados no banco de dadosBenefrancis do Nascimento
SISTEMA WEB
106 
 
	
	
	
	
	
	
	
	
	
Criando	as	páginas	JSP	
Benefrancis do Nascimento
SISTEMA WEB
107 
 
Mapa	do	site	
	
O nosso sistema web deverá seguir a estrutura representada no mapa do site abaixo: 
Index.jsp
Inicio.jsp
Pessoa.jsp Registrar.jsp Animal.jsp
Animal.jsp
Detalhe_animal.jsp
Editar_animal.jsp
Excluir_animal.jsp
Pessoa.jsp
Detalhe_pessoa.jsp
Editar_pessoa.jsp
Excluir_pessoa.jsp
Servico.jsp
Detalhe_servico.jsp
Editar_servico.jsp
Excluir_servico.jsp
cadastros serviços consultas
 
Figura 88‐ Mapa do site 
 
Criando	diretórios	necessários		
 
Agora trabalharemos com a camada de apresentação e, desta forma será necessário criar 
diretórios para armazenar imagens, css, javascript e etc. Para criar um diretório no seu projeto 
web.  
Clique com o botão direito do mouse em cima da pasta Páginas web um menú suspenso 
aparecerá; nele selecione: Novo / Diretório. A janela abaixo será exibida. 
Benefrancis do Nascimento
SISTEMA WEB
108 
 
 
Figura 89 ‐ Criando um novo diretório acessível para a internet no seu projeto web 
Crie os diretórios conforme tabela abaixo: 
Tabela 1 – Os diretórios do nosso sistema web. Neles estão as imagem, css, javascript e etc. (Solicite 
para o professor pelo e‐mail: Benefrancis@gmail.com) 
NOME  Motivo 
images  Será o local onde guardaremos as imagens do 
nosso sistema web. 
css  Onde serão inseridos os arquivos de estilo. 
javascript  Onde estarão os arquivos Java script  
geral  Onde estará o conteúdo html que aparecerá 
em todas as telas: 
 head.jsp – onde faremos os importes 
necessários. 
 topo.jsp – topo do site e o menú 
 rodapé.jsp – rodapé do site 
 inicio.jsp – tela de boas vindas do 
sistema (após autenticação) 
 
Benefrancis do Nascimento
SISTEMA WEB
109 
 
Iniciando	a	programação	das	páginas	JSP	
Importando	as	classes	necessárias	
Para se trabalhar com classes Java em páginas JSP, necessitaremos fazer o importe das classes 
que precisaremos utilizar. Portanto em nossa aplicação necessitaremos fazer o importe das 
classes do pacote controle. Para evitar esquecimento de alguma classe poderemos fazer o 
importe de todas as classes deste pacote. Veja como fazer na segunda linha do código na 
imagem abaixo: 
 
Figura 90 ‐ Importando todas as classes do pacote controle 
Portanto inclua a tag <%@page import="br.com.benefrancis.controle.*"%> em todas as 
páginas de nosso sistema web. 
Index.jsp	
O arquivo index.jsp deverá está na raiz da nossa aplicação web (diretório Páginas web).  
Na pagina index, ou seja, a primeira página que será aberta em nossa aplicação. 
Desenvolveremos uma tela onde o usuário deverá ser autenticado. 
A tela deverá ter um formulário. Veja a tag: 
<form name="FrmLogin" id="FrmLogin" method="POST"  action="index.jsp"> 
<!—Incluir os campos do formulário aqui ‐‐> 
</form> 
Deverá possuir um campo oculto, dois campos editáveis e um botão obedecendo ao que 
descreve a tabela abaixo: 
TIPO  NOME  SIZE  VALUE 
text  usuario  15    
password  senha  15    
hidden  op  ‐  1 
submit  btn_autenticar    Autenticar 
Benefrancis do Nascimento
SISTEMA WEB
110 
 
O design semelhante à tela da imagem a seguir: 
 
 
Figura 91 ‐ Layout da página index.jsp 
Código	fonte	Java	da	pagina	index.jsp	
O código fonte da imagem abaixo recebe na linha 52 o valor do campo hidden e o converte 
para inteiro, já nas linhas 57 e 58 receberá os parâmetros sobre usuário e senha do formulário 
e aciona o método autenticar do objeto PF. 
Benefrancis do Nascimento
SISTEMA WEB
111 
 
Figura 92 ‐ Autenticando ‐ index.jsp 
Código	fonte	completo	da	pagina	index.jsp	
 
<%@page contentType="text/html" pageEncoding="UTF‐8"%> 
<%@page import="br.com.benefrancis.controle.*"%> 
<!DOCTYPE HTML PUBLIC "‐//W3C//DTD HTML 4.01 Transitional//EN" 
    "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
    <head> 
        <meta http‐equiv="Content‐Type" content="text/html; charset=UTF‐8"> 
        <title>PETSHOP</title> 
        <link  rel="stylesheet" type="text/css" href="css/Estilo.css"> 
    </head> 
    <body> 
Benefrancis do Nascimento
SISTEMA WEB
112 
 
        <form name="FrmLogin" id="FrmLogin" method="POST"  action="index.jsp"> 
            <table width="103%"  border="0" cellpadding="0" cellspacing="0"align="center" > 
                <tr> 
                    <td align="center" valign="middle"> 
                        <table width="750"  border="0" cellspacing="0" cellpadding="0" align="center" 
> 
                            <tr> 
                                <td width="40%" height="500" align="center" valign="middle"> 
                                    <img src="images/login.png" alt="Petshop"/> 
                                </td> 
                                <td width="60%" align="center" valign="middle"> 
                                    <table border="0" > 
                                        <tr> 
                                            <td class="Txt">USUARIO</td> 
                                            <td class="Txt"><input type="text" name="usuario" value="" 
size="15"/></td> 
                                        </tr> 
                                        <tr> 
                                            <td class="Txt">SENHA</td> 
                                            <td class="Txt"><input type="password" name="senha" value="" 
size="15" /></td> 
                                        </tr> 
                                        <tr> 
                                            <td colspan="2"><hr size="1"><input type="hidden" name="op" 
value="1" /></td> 
                                        </tr> 
                                        <tr> 
Benefrancis do Nascimento
SISTEMA WEB
113 
 
                                            <td></td> 
                                            <td><input type="submit" value="Autenticar" 
name="btn_autenticar" /></td> 
                                        </tr> 
                                        <tr><td colspan="2" class="Txt"> 
<% 
String usuario = ""; 
String senha = ""; 
int op = 0; 
try { 
    op = Integer.parseInt(request.getParameter("op")); 
} catch (Exception ex) {} 
try { 
    if (op == 1) { 
        usuario = request.getParameter("usuario"); 
        senha = request.getParameter("senha"); 
        Autenticavel p = new PF().autenticar(usuario, senha); 
        if (p != null) { 
            session.setAttribute("Usuario", p); 
            String novaURL = "geral/inicio.jsp"; 
            response.sendRedirect(novaURL); 
        } else { 
            out.print("<br>"); 
            out.print("<center><font face='verdana' color='red'   " + 
                    "size='2'>Usuario ou senha inválidos</font></center>"); 
            out.print("<br>"); 
Benefrancis do Nascimento
SISTEMA WEB
114 
 
        } 
    } 
} catch (Exception e) {} 
%> 
                                            </td> 
                                        </tr> 
                                    </table> 
                                </td> 
                            </tr> 
                        </table> 
                    </td> 
                </tr> 
            </table> 
        </form> 
    </body> 
</html> 
 
 
 
 
 
 
 
 
 
Benefrancis do Nascimento
SISTEMA WEB
115 
 
	
 
 
 
 
 
 
 
 
 
 
Codificando	arquivos	do	diretório	geral	
	
Benefrancis do Nascimento
SISTEMA WEB
116 
 
Head.jsp	
 
Abaixo o conteúdo do arquivo head.jsp 
Figura 93 ‐ conteúdo do arquivo head.jsp 
 
 
 
 
 
 
 
 
Benefrancis do Nascimento
SISTEMA WEB
117 
 
Topo.jsp	
 
Abaixo o conteúdo do arquivo topo.jsp 
Figura 94 ‐ Códigodo arquivo topo.jsp 
 
Rodapé.jsp	
 
Abaixo o código do arquivo rodapé.jsp 
Figura 95 ‐ Código do arquivo rodapé.jsp 
 
 
Benefrancis do Nascimento
SISTEMA WEB
118 
 
Inicio.jsp	
 
Abaixo o código do arquivo inicio.jsp. A tela de boas vindas da nossa aplicação. 
Figura 96 ‐ Código do arquivo inicio.jsp 
 
 
 
 
 
 
 
 
 
Benefrancis do Nascimento
SISTEMA WEB
119 
 
Layout	da	tela	de	boas	vindas	
 
Abaixo a tela de boas vindas da nossa aplicação. 
 
Figura 97 ‐ A tela de boas vindas da nossa aplicação 
 
Benefrancis do Nascimento
SISTEMA WEB
120 
 
 
 
 
 
 
 
 
 
 
 
 
 
Codificando	arquivos	do	diretório	cadastros	
Benefrancis do Nascimento
SISTEMA WEB
121 
 
Pessoa.jsp	
 
O arquivo pessoa.jsp do diretório cadastros será a nossa tela para cadastramento de pessoas 
em nosso sistemas. Uma pessoa será um usuário ‐ utilizador do sistema. O sistema deverá 
verificar se existe uma pessoa cadastrada no sistema. Para fazer a verificação deveremos 
verificar, antes do cadastramento de uma pessoa, se: 
1º. O e‐mail informado já está registrado no banco de dados; 
2º. Se o documento da receita já está cadastrado no sistema. 
 
A tela deverá possuir um formulário. Veja a tag: 
<form action="pessoa.jsp" method="post" name="Formulario" > 
<!—Incluir os elementos do formulário aqui ‐‐> 
</form> 
Elementos	do	formulário	
Abaixo segue a lista dos elementos e suas propriedades: 
Tabela 2 ‐ Elementos do formulário da página para cadastramento de pessoa 
Índice  Id  Nome  Tipo Valor Tamanho  Tamanho 
máximo 
0  Tipo  Tipo  select  
1  razao  razao  text 50  100 
2  CNPJ  CNPJ  text 24  18 
3  Nome  Nome  text 50  100 
4  CPF  CPF  text 17  14 
5  email  email  text 50  200 
6  senha  senha  text 50  200 
7  TelDDD  TelDDD  text 2 2 
8  Tel  Tel text 12  10 
Benefrancis do Nascimento
SISTEMA WEB
122 
 
9    TelCelDDD  text 2 2 
10    TelCel  text 12  10 
11    TelFaxDDD  text 2 2 
12    TelFax  text 12  10 
13    logradouro  text 50  50 
14    Numero  text 10  10 
15    Complemento  text 30  50 
16    Bairro  text 30  50 
17    Cidade  text 30  50 
18    uf select  
19    CEP  text 12  9 
20    op hidden 1  
21    Btn_Entrar  button Cadastrar  
 
Código	fonte	Java	do	arquivo	pessoa.jsp	
 
Exibiremos abaixo o código fonte da página de cadastramento de pessoas. Não será necessário 
digitar o código abaixo, pois o arquivo foi disponibilizado. 
Benefrancis do Nascimento
SISTEMA WEB
123 
 
<%@page contentType="text/html" pageEncoding="UTF‐8"%>
<%@page import="br.com.benefrancis.controle.*" %> 
<%@page import="br.com.benefrancis.util.Util" %> 
<%@page import="java.util.ArrayList" %> 
<%@page import="java.util.Date" %> 
<!DOCTYPE HTML PUBLIC "‐//W3C//DTD HTML 4.01 Transitional//EN" 
    "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
    <jsp:include page="../geral/head.jsp" /> 
    <body> 
        <form action="pessoa.jsp" method="post" name="Formulario" > 
            <table width="750" border="0" cellpadding="0" cellspacing="0" align="center"> 
                <tr> 
                    <td colspan="2"> 
                        <jsp:include page="../geral/topo.jsp" /> 
                    </td> 
                </tr> 
                <tr> 
                    <td colspan="2"> 
                        <% 
                    int op = 0; 
                    String tipo = null; 
                    Pessoa pessoa = null; 
                    String username = null; 
                    String senha = null; 
                    DocReceita docReceita = null; 
                    try { 
                        op = Integer.parseInt(Util.SoNumero(request.getParameter("op"))); 
                    } catch (Exception ex) { 
Benefrancis do Nascimento
SISTEMA WEB
124 
 
                    } 
 
                    try { 
                        if (op == 1) {//O formulário foi enviado 
                            try { 
                                tipo = request.getParameter("Tipo"); 
                            } catch (Exception ex) { 
                            } 
                            if (tipo == "PJ") { 
                                String razao = null; 
                                try { 
                                    razao = request.getParameter("razao"); 
                                    docReceita = new CNPJ(request.getParameter("CNPJ")); 
                                    //Criando uma pessoa juridica 
                                    pessoa = new PJ(); 
                                    pessoa.setDocReceita(docReceita); 
                                    pessoa.setNome(razao); 
                                    docReceita.setPessoa(pessoa); 
                                } catch (Exception ex) { 
                                    ex.printStackTrace(); 
                                    throw new RuntimeException("<center>" + 
                                    "<font face='verdana' color='red'   " + 
                                    "size='2'>Erro ao cadastrar Utilizador." + 
                                    "<br /> Verifique os dados de Pessoa Jurídica" + 
                                    " tente novamente</font></center>"); 
                                } 
                            } else { 
                                try { 
                                    String nome = request.getParameter("Nome"); 
Benefrancis do Nascimento
SISTEMA WEB
125 
 
                                    docReceita = new CPF(request.getParameter("CPF"));
                                    //Criando uma pessoa física 
                                    pessoa = new PF(); 
                                    pessoa.setDocReceita(docReceita); 
                                    pessoa.setNome(nome); 
                                    docReceita.setPessoa(pessoa); 
                                } catch (Exception ex) { 
                                    ex.printStackTrace(); 
                                    throw new RuntimeException("<center>" + 
                                            "<font face='verdana' color='red' " + 
                                            "  size='2'>Erro ao cadastrar Utilizador." + 
                                            "<br /> Verifique os dados de Pessoa física" + 
                                            " tente novamente</font></center>"); 
                                } 
                            } 
                            //Já existe pessoa com o CPF ou CNPJ informado? 
                            if (pessoa.existe(docReceita) == true) { 
                                if (pessoa.getTipo() == 1) { 
                                    throw new RuntimeException("<br>" + 
                                            "<center><font face='verdana' " + 
                                            "color='red'   size='2'><br />" + 
                                            "já existe cliente cadastrado com" + 
                                            " o CPF informado</font></center><br>"); 
                                } else { 
                                    throw new RuntimeException("<br>" + 
                                            "<center><font face='verdana' " + 
                                            "color='red'   size='2'><br />" + 
                                            "já existe cliente cadastrado com" + 
                                            " o CNPJ informado</font></center><br>"); 
Benefrancis do Nascimento
SISTEMA WEB
126 
 
 
                                } 
                            } 
                            try { 
                                username = request.getParameter("email"); 
                                senha= request.getParameter("senha"); 
                            } catch (Exception ex) { 
                                throw new RuntimeException("Verifique " + 
                                        "se o e‐mail e senha foram " + 
                                        "digitados corretamente"); 
                            } 
                            if (username == "" || senha == "") { 
                                throw new RuntimeException("<center>" + 
                                        "<font face='verdana' color='red'" + 
                                        " size='2'><br />Verifique o e‐mail " + 
                                        "e senha foram digitados corretamente" + 
                                        "</font></center>"); 
                            } else if (pessoa.existe(username) == true) { 
                                throw new RuntimeException("<br><center>" + 
                                        "<font face='verdana' color='red' " + 
                                        " size='2'><br />já existe usuário " + 
                                        "cadastrado com o e‐mail digitado</font>" + 
                                        "</center><br>"); 
                            } else { 
                                pessoa.setEmail(username); 
                                pessoa.setSenha(senha); 
                            } 
                            //Telefones da pessoa 
                            ArrayList<Telefone> telefone = new ArrayList<Telefone>(); 
Benefrancis do Nascimento
SISTEMA WEB
127 
 
                            try { 
                                int dddTel = Integer.parseInt(Util.SoNumero(request.getParameter("TelDDD"))); 
                                String Tel = Util.SoNumero(request.getParameter("Tel")); 
                                if (dddTel != 0 && Tel != "") { 
                                    telefone.add(new Telefone(dddTel, Tel, pessoa)); 
                                } 
                            } catch (Exception eTel) { 
                            } 
                            try { 
                                int dddCel = Integer.parseInt(Util.SoNumero(request.getParameter("TelCelDDD"))); 
                                String Cel = Util.SoNumero(request.getParameter("TelCel")); 
                                if (dddCel != 0 && Cel != "") { 
                                    telefone.add(new Telefone(dddCel, Cel, pessoa)); 
                                } 
                            } catch (Exception eCel) { 
                            } 
                            try { 
                                int dddFax = Integer.parseInt(Util.SoNumero(request.getParameter("TelFaxDDD"))); 
                                String Fax = Util.SoNumero(request.getParameter("TelFax")); 
                                if (dddFax != 0 && Fax != "") { 
                                    telefone.add(new Telefone(dddFax, Fax, pessoa)); 
                                } 
                            } catch (Exception eFax) { 
                            } 
                            //Endereços da pessoa 
                            ArrayList<Endereco> end = new ArrayList<Endereco>(); 
                            Endereco endereco = new Endereco(); 
                            String logradouro = ""; 
                            String numero = ""; 
Benefrancis do Nascimento
SISTEMA WEB
128 
 
                            String complemento = "";
                            String bairro = ""; 
                            String cep = ""; 
                            String cidade = ""; 
                            String uf = ""; 
                            try { 
                                logradouro = request.getParameter("logradouro"); 
                                numero = request.getParameter("Numero"); 
                                complemento = request.getParameter("Complemento"); 
                                bairro = request.getParameter("Bairro"); 
                                cep = Util.SoNumero(request.getParameter("CEP")); 
                                cidade = request.getParameter("Cidade"); 
                                uf = request.getParameter("uf"); 
                                if (logradouro == "" || numero == ""  
                                        || bairro == "" || cidade == "" 
                                        || uf == "" || cep == "") { 
                                    throw new RuntimeException("O endereço deve conter" + 
                                            " logradouro, número, Bairro, " + 
                                            "Cidade, Estado e CEP"); 
                                } else { 
                                    endereco.setLogradouro(logradouro); 
                                    endereco.setBairro(bairro); 
                                    endereco.setCep(cep); 
                                    endereco.setCidade(cidade); 
                                    endereco.setComplemento(complemento); 
                                    endereco.setNumero(numero); 
                                    endereco.setUf(uf); 
                                    endereco.setPessoa(pessoa); 
                                    end.add(endereco); 
Benefrancis do Nascimento
SISTEMA WEB
129 
 
                                } 
                            } catch (Exception ex) { 
                                ex.printStackTrace(); 
                                throw new RuntimeException("Logradouro é um campo obrigatório"); 
                            } 
                            //Salvando a pessoa e todos os seua relacionamentos em banco de dados 
                            //Adicionando a Pessoa 
                            pessoa.setTelefone(telefone); 
                            pessoa.setEndereco(end); 
                            pessoa.setAnimal(null); 
                            //Salvando: 
                            pessoa.salvar(pessoa); 
                            out.print("<br>"); 
                            out.print("<br>"); 
                            out.print("<br>"); 
                            out.print("<center><font face='verdana' color='blue'   size='2'>Utilizador cadastrado com 
sucesso</font></center>"); 
                            out.print("<br>"); 
                            out.print("<br>"); 
                            out.print("<br>"); 
                        } else {//Se op for diferente de 1 
%> 
 
                    </td> 
                </tr> 
                <tr> 
                    <td width="162" class="Txt">Tipo</td> 
                    <td width="436" class="Txt"> 
                        <select name="Tipo" id="Tipo" 
onChange="showCampo(document.forms[0][this.name].options[document.forms[0][this.name].selecte
Benefrancis do Nascimento
SISTEMA WEB
130 
 
dIndex].value,'campo_hidden');"> 
                            <option value="0">Selecione</option> 
                            <option value="PJ">PJ</option> 
                            <option value="PF">PF</option> 
                        </select> 
                    </td> 
                </tr> 
                <tr id="campo_hiddenPJ" style="display:none"> 
                    <td  height="104" colspan="2" valign="top"> 
 
                        <table width="100%" border="0" cellpadding="0" cellspacing="0"> 
                            <!‐‐DWLayoutTable‐‐> 
                            <tr> 
                                <td height="1" colspan="2" valign="top"><hr size="1"></td> 
                            </tr> 
                            <tr> 
                                <td height="22" colspan="2" valign="top" class="Txt"><strong>PESSOA JURÍDICA 
</strong></td>

Outros materiais