Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouRayssa Alanis Alterado mais de 9 anos atrás
1
Entity Beans Marco Antonio Arquiteto de Software Dezembro/2007
2
Introdução EJB responsável pela persistência dos objetos. Existem dois tipos: CMP e BMP. CMP – Container Managed Persistence: o AppServer cria o código SQL, controla o pool de objetos e as transações. BMP – Bean Managed Persistence: o AppServer gerencia o pool de objetos e as transações, mas o código SQL é gerado pelo programador.
3
Considerações A utilização de Entity Beans deve sempre levar em consideração as boas práticas de programação. Novos recursos têm sido criados para melhorar a eficiência do EJB. Assim como é recomendável utilizar apenas Session Beans Stateless por causa da performance (Stateful utiliza muito recurso do servidor), é altamente recomendável que não utilizemos as interfaces remotas para os Entity Beans. Existe uma alternativa.
4
Tecnologias concorrentes Existem diversos frameworks de mapeamento de dados, os mais importantes são: –Hibernate –TopLink –EJB3
5
New entity bean No exemplo, vamos criar o entity bean Cliente (cpf, nome, endereco, telefone)
6
New XDoclet EJB
7
Criação do EJB
9
Entity bean Name: nome do ejb Schema: database (a seguir) Descrição: breve descrição do componente Versão: 2.1 Usecase: O EJB irá criar a tabela e não o contrário
10
Atributos do EJB O EJB irá criar a tabela Cliente com os seguintes atributos: –Cpf –Nome –Endereco –Telefone
12
Passos finais O EJB está pronto O próximo passo é configurar o banco de dados
13
Configuração do XDoclet O XDoclet gera diversas classes utilitárias Nem todas são utilizadas nesse exemplo, dessa forma, vamos eliminar algumas opções
15
XDoclet Observe algumas configurações importantes: –Datasource –Createtable
16
Métodos de inclusão Cada entity deve ter ao menos um método create, que será usado para inserir os dados nas respectivas colunas da tabela Para cada ejbCreate, é necessário um ejbPostCreate com os mesmos parâmetros
17
ejbCreate public java.lang.String ejbCreate(String cpf, String nome, String endereco, String telefone, Double saldo, Double limite) throws javax.ejb.CreateException { setCpf(cpf); setNome(nome); setEndereco(endereco); setTelefone(telefone); setSaldo(saldo); setLimiteDeChequeEspecial(limite); return null; }
18
ejbPostCreate public void ejbPostCreate(String cpf, String nome, String endereco, String telefone, Double saldo, Double limite) throws javax.ejb.CreateException { }
19
Datasource Arquivo de configuração do banco de dados do sistema. Datasource: fonte de dados, conexão com uma base de dados. Copie no diretório de deploy do JBoss (jboss/server/default/deploy).
20
sisban-ds.xml sisban jdbc:postgresql://localhost:5432/sisban org.postgresql.Driver postgres 5 20 1 PostgreSQL 8.0
21
sisban-ds.xml jndi-name: nome da conexão connection-url: endereço do servidor de BD driver-class: nome da classe do driver JDBC user-name: usuário do BD password: senha do BD min-pool-size: quantidade inicial de conexões max-pool-size: quantidade máxima de conexões type-mapping: mapeamento do BD (Postgre, Oracle, Informix, SQLServer)
22
Driver JDBC do PostgreSQL Quando uma apliação Java precisa se comunicar com um banco de dados, precisamos registrar seu drive JDBC Procure o arquivo postgre-8.2-505.jdbc2.jar e copie no diretório de libs do JBoss
24
Administrator do PostgreSQL Após a instalação do Postgre, abra o pgAdmin
26
Senha Informe a senha
27
Database Crie o database sisban Todas as tabelas do nosso exemplo estarão aí dentro Navegue pelo administrator até encontrar a lista de tabelas (nenhuma foi criada ainda)
30
Deploy e criação das tabelas Levante o servidor e faça o deploy da aplicação Observe as mensagens Esse ponto é crítico, pois qualquer erro irá derrubar o deploy. É necessária muita atenção
31
Mensagem de sucesso A saída esperada no console é a que você acompanha na imagem Após o deploy, a tabela Cliente será criada Acompanhe pelo administrator
33
Dados da tabela Clique na opção View the Data para consultar os dados da tabela
34
Clientes Vamos criar várias classes para as diversas operações de banco de dados –Inclusão –Alteração –Exclusão –Consulta todos os registros
35
Inclusão package net.sistemabancario.entidades.cliente; import net.sistemabancario.entidades.Cliente; import net.sistemabancario.entidades.ClienteHome; import net.sistemabancario.entidades.ClienteUtil; public class TesteInclusaoCliente { public static void main(String[] args) { try { ClienteHome home = ClienteUtil.getHome(); Cliente cliente = home.create("83286950150", "Marco", "QE04", "8119", 0.0, 2000.0); System.out.println("Cliente incluido com sucesso"); } catch (Exception e) { e.printStackTrace(); } Execute a classe algumas vezes para inserir dados na tabela
36
Dados da tabela Atualize a tela de consulta e acompanhe a inclusão dos registros
37
Atualização package net.sistemabancario.entidades.cliente; import net.sistemabancario.entidades.Cliente; import net.sistemabancario.entidades.ClienteHome; import net.sistemabancario.entidades.ClienteUtil; public class TesteAlteracaoCliente { public static void main(String[] args) { try { ClienteHome home = ClienteUtil.getHome(); Cliente cliente = home.findByPrimaryKey("83286950149"); cliente.setEndereco("Novo Endereço"); System.out.println(cliente.getCpf()); System.out.println(cliente.getNome()); System.out.println(cliente.getEndereco()); System.out.println(cliente.getTelefone()); System.out.println(cliente.getSaldo()); System.out.println(cliente.getLimiteDeChequeEspecial()); } catch (Exception e) { e.printStackTrace(); }
38
Exclusão package net.sistemabancario.entidades.cliente; import net.sistemabancario.entidades.ClienteHome; import net.sistemabancario.entidades.ClienteUtil; public class TesteExclusaoCliente { public static void main(String[] args) { try { ClienteHome home = ClienteUtil.getHome(); home.remove("83286950149"); System.out.println("Cliente excluido com sucesso"); } catch (Exception e) { e.printStackTrace(); }
39
Consulta todos package net.sistemabancario.entidades.cliente; import java.util.Collection; import net.sistemabancario.entidades.Cliente; import net.sistemabancario.entidades.ClienteHome; import net.sistemabancario.entidades.ClienteUtil; public class TesteConsultaClientes { public static void main(String[] args) { try { ClienteHome home = ClienteUtil.getHome(); Collection lista = home.findAll(); for (Cliente cliente : lista) { System.out.println(cliente.getCpf()); System.out.println(cliente.getNome()); System.out.println(cliente.getEndereco()); System.out.println(cliente.getTelefone()); System.out.println(cliente.getSaldo()); System.out.println(cliente.getLimiteDeChequeEspecial()); System.out.println("-------------"); } } catch (Exception e) { e.printStackTrace(); }
40
Exercícios Crie o entity bean para ContaCorrente (numero, saldo, limiteDeChequeEspecial) –O código do cliente será implementado em uma versão futura
41
Dúvidas?
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.