A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Entity Beans Marco Antonio Arquiteto de Software Dezembro/2007.

Apresentações semelhantes


Apresentação em tema: "Entity Beans Marco Antonio Arquiteto de Software Dezembro/2007."— Transcrição da apresentação:

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

8

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

11

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

14

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

23

24 Administrator do PostgreSQL Após a instalação do Postgre, abra o pgAdmin

25

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)

28

29

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

32

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?


Carregar ppt "Entity Beans Marco Antonio Arquiteto de Software Dezembro/2007."

Apresentações semelhantes


Anúncios Google