entity beans marco antonio arquiteto de software dezembro/2007
TRANSCRIPT
![Page 1: Entity Beans Marco Antonio Arquiteto de Software Dezembro/2007](https://reader035.vdocuments.net/reader035/viewer/2022070312/552fc16b497959413d8ec510/html5/thumbnails/1.jpg)
Entity BeansMarco AntonioArquiteto de SoftwareDezembro/2007
![Page 2: Entity Beans Marco Antonio Arquiteto de Software Dezembro/2007](https://reader035.vdocuments.net/reader035/viewer/2022070312/552fc16b497959413d8ec510/html5/thumbnails/2.jpg)
IntroduçãoEJB 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.
![Page 3: Entity Beans Marco Antonio Arquiteto de Software Dezembro/2007](https://reader035.vdocuments.net/reader035/viewer/2022070312/552fc16b497959413d8ec510/html5/thumbnails/3.jpg)
ConsideraçõesA 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.
![Page 4: Entity Beans Marco Antonio Arquiteto de Software Dezembro/2007](https://reader035.vdocuments.net/reader035/viewer/2022070312/552fc16b497959413d8ec510/html5/thumbnails/4.jpg)
Tecnologias concorrentes• Existem diversos frameworks de
mapeamento de dados, os mais importantes são:– Hibernate– TopLink– EJB3
![Page 5: Entity Beans Marco Antonio Arquiteto de Software Dezembro/2007](https://reader035.vdocuments.net/reader035/viewer/2022070312/552fc16b497959413d8ec510/html5/thumbnails/5.jpg)
New entity bean• No exemplo, vamos criar o entity bean
Cliente (cpf, nome, endereco, telefone)
![Page 6: Entity Beans Marco Antonio Arquiteto de Software Dezembro/2007](https://reader035.vdocuments.net/reader035/viewer/2022070312/552fc16b497959413d8ec510/html5/thumbnails/6.jpg)
New XDoclet EJB
![Page 7: Entity Beans Marco Antonio Arquiteto de Software Dezembro/2007](https://reader035.vdocuments.net/reader035/viewer/2022070312/552fc16b497959413d8ec510/html5/thumbnails/7.jpg)
Criação do EJB
![Page 8: Entity Beans Marco Antonio Arquiteto de Software Dezembro/2007](https://reader035.vdocuments.net/reader035/viewer/2022070312/552fc16b497959413d8ec510/html5/thumbnails/8.jpg)
Criação do EJB
![Page 9: Entity Beans Marco Antonio Arquiteto de Software Dezembro/2007](https://reader035.vdocuments.net/reader035/viewer/2022070312/552fc16b497959413d8ec510/html5/thumbnails/9.jpg)
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
![Page 10: Entity Beans Marco Antonio Arquiteto de Software Dezembro/2007](https://reader035.vdocuments.net/reader035/viewer/2022070312/552fc16b497959413d8ec510/html5/thumbnails/10.jpg)
Atributos do EJB• O EJB irá criar a tabela Cliente com os
seguintes atributos:– Cpf– Nome– Endereco– Telefone
![Page 11: Entity Beans Marco Antonio Arquiteto de Software Dezembro/2007](https://reader035.vdocuments.net/reader035/viewer/2022070312/552fc16b497959413d8ec510/html5/thumbnails/11.jpg)
![Page 12: Entity Beans Marco Antonio Arquiteto de Software Dezembro/2007](https://reader035.vdocuments.net/reader035/viewer/2022070312/552fc16b497959413d8ec510/html5/thumbnails/12.jpg)
Passos finais• O EJB está
pronto• O próximo passo
é configurar o banco de dados
![Page 13: Entity Beans Marco Antonio Arquiteto de Software Dezembro/2007](https://reader035.vdocuments.net/reader035/viewer/2022070312/552fc16b497959413d8ec510/html5/thumbnails/13.jpg)
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
![Page 14: Entity Beans Marco Antonio Arquiteto de Software Dezembro/2007](https://reader035.vdocuments.net/reader035/viewer/2022070312/552fc16b497959413d8ec510/html5/thumbnails/14.jpg)
![Page 15: Entity Beans Marco Antonio Arquiteto de Software Dezembro/2007](https://reader035.vdocuments.net/reader035/viewer/2022070312/552fc16b497959413d8ec510/html5/thumbnails/15.jpg)
XDoclet• Observe algumas
configurações importantes:– Datasource– Createtable
![Page 16: Entity Beans Marco Antonio Arquiteto de Software Dezembro/2007](https://reader035.vdocuments.net/reader035/viewer/2022070312/552fc16b497959413d8ec510/html5/thumbnails/16.jpg)
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
![Page 17: Entity Beans Marco Antonio Arquiteto de Software Dezembro/2007](https://reader035.vdocuments.net/reader035/viewer/2022070312/552fc16b497959413d8ec510/html5/thumbnails/17.jpg)
ejbCreatepublic 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;}
![Page 18: Entity Beans Marco Antonio Arquiteto de Software Dezembro/2007](https://reader035.vdocuments.net/reader035/viewer/2022070312/552fc16b497959413d8ec510/html5/thumbnails/18.jpg)
ejbPostCreatepublic void ejbPostCreate(String cpf, String nome, String
endereco, String telefone, Double saldo, Double limite) throws javax.ejb.CreateException {
}
![Page 19: Entity Beans Marco Antonio Arquiteto de Software Dezembro/2007](https://reader035.vdocuments.net/reader035/viewer/2022070312/552fc16b497959413d8ec510/html5/thumbnails/19.jpg)
DatasourceArquivo 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).
![Page 20: Entity Beans Marco Antonio Arquiteto de Software Dezembro/2007](https://reader035.vdocuments.net/reader035/viewer/2022070312/552fc16b497959413d8ec510/html5/thumbnails/20.jpg)
sisban-ds.xml<?xml version="1.0" encoding="UTF-8"?><datasources> <local-tx-datasource> <jndi-name>sisban</jndi-name> <connection-url>jdbc:postgresql://localhost:5432/sisban</connection-url> <driver-class>org.postgresql.Driver</driver-class> <user-name>postgres</user-name> <password>postgres</password> <min-pool-size>5</min-pool-size> <max-pool-size>20</max-pool-size> <idle-timeout-minutes>1</idle-timeout-minutes> <metadata> <type-mapping>PostgreSQL 8.0</type-mapping> </metadata> </local-tx-datasource></datasources>
![Page 21: Entity Beans Marco Antonio Arquiteto de Software Dezembro/2007](https://reader035.vdocuments.net/reader035/viewer/2022070312/552fc16b497959413d8ec510/html5/thumbnails/21.jpg)
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)
![Page 22: Entity Beans Marco Antonio Arquiteto de Software Dezembro/2007](https://reader035.vdocuments.net/reader035/viewer/2022070312/552fc16b497959413d8ec510/html5/thumbnails/22.jpg)
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
![Page 23: Entity Beans Marco Antonio Arquiteto de Software Dezembro/2007](https://reader035.vdocuments.net/reader035/viewer/2022070312/552fc16b497959413d8ec510/html5/thumbnails/23.jpg)
![Page 24: Entity Beans Marco Antonio Arquiteto de Software Dezembro/2007](https://reader035.vdocuments.net/reader035/viewer/2022070312/552fc16b497959413d8ec510/html5/thumbnails/24.jpg)
Administrator do PostgreSQL• Após a instalação do Postgre, abra o
pgAdmin
![Page 25: Entity Beans Marco Antonio Arquiteto de Software Dezembro/2007](https://reader035.vdocuments.net/reader035/viewer/2022070312/552fc16b497959413d8ec510/html5/thumbnails/25.jpg)
![Page 26: Entity Beans Marco Antonio Arquiteto de Software Dezembro/2007](https://reader035.vdocuments.net/reader035/viewer/2022070312/552fc16b497959413d8ec510/html5/thumbnails/26.jpg)
Senha• Informe a senha
![Page 27: Entity Beans Marco Antonio Arquiteto de Software Dezembro/2007](https://reader035.vdocuments.net/reader035/viewer/2022070312/552fc16b497959413d8ec510/html5/thumbnails/27.jpg)
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)
![Page 28: Entity Beans Marco Antonio Arquiteto de Software Dezembro/2007](https://reader035.vdocuments.net/reader035/viewer/2022070312/552fc16b497959413d8ec510/html5/thumbnails/28.jpg)
![Page 29: Entity Beans Marco Antonio Arquiteto de Software Dezembro/2007](https://reader035.vdocuments.net/reader035/viewer/2022070312/552fc16b497959413d8ec510/html5/thumbnails/29.jpg)
![Page 30: Entity Beans Marco Antonio Arquiteto de Software Dezembro/2007](https://reader035.vdocuments.net/reader035/viewer/2022070312/552fc16b497959413d8ec510/html5/thumbnails/30.jpg)
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
![Page 31: Entity Beans Marco Antonio Arquiteto de Software Dezembro/2007](https://reader035.vdocuments.net/reader035/viewer/2022070312/552fc16b497959413d8ec510/html5/thumbnails/31.jpg)
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
![Page 32: Entity Beans Marco Antonio Arquiteto de Software Dezembro/2007](https://reader035.vdocuments.net/reader035/viewer/2022070312/552fc16b497959413d8ec510/html5/thumbnails/32.jpg)
![Page 33: Entity Beans Marco Antonio Arquiteto de Software Dezembro/2007](https://reader035.vdocuments.net/reader035/viewer/2022070312/552fc16b497959413d8ec510/html5/thumbnails/33.jpg)
Dados da tabela• Clique na opção View the
Data para consultar os dados da tabela
![Page 34: Entity Beans Marco Antonio Arquiteto de Software Dezembro/2007](https://reader035.vdocuments.net/reader035/viewer/2022070312/552fc16b497959413d8ec510/html5/thumbnails/34.jpg)
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
![Page 35: Entity Beans Marco Antonio Arquiteto de Software Dezembro/2007](https://reader035.vdocuments.net/reader035/viewer/2022070312/552fc16b497959413d8ec510/html5/thumbnails/35.jpg)
Inclusãopackage 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
![Page 36: Entity Beans Marco Antonio Arquiteto de Software Dezembro/2007](https://reader035.vdocuments.net/reader035/viewer/2022070312/552fc16b497959413d8ec510/html5/thumbnails/36.jpg)
Dados da tabela• Atualize a tela de
consulta e acompanhe a inclusão dos registros
![Page 37: Entity Beans Marco Antonio Arquiteto de Software Dezembro/2007](https://reader035.vdocuments.net/reader035/viewer/2022070312/552fc16b497959413d8ec510/html5/thumbnails/37.jpg)
Atualizaçãopackage 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(); } }}
![Page 38: Entity Beans Marco Antonio Arquiteto de Software Dezembro/2007](https://reader035.vdocuments.net/reader035/viewer/2022070312/552fc16b497959413d8ec510/html5/thumbnails/38.jpg)
Exclusãopackage 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(); } } }
![Page 39: Entity Beans Marco Antonio Arquiteto de Software Dezembro/2007](https://reader035.vdocuments.net/reader035/viewer/2022070312/552fc16b497959413d8ec510/html5/thumbnails/39.jpg)
Consulta todospackage 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<Cliente> 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(); } }}
![Page 40: Entity Beans Marco Antonio Arquiteto de Software Dezembro/2007](https://reader035.vdocuments.net/reader035/viewer/2022070312/552fc16b497959413d8ec510/html5/thumbnails/40.jpg)
Exercícios• Crie o entity bean para ContaCorrente
(numero, saldo, limiteDeChequeEspecial)– O código do cliente será implementado em
uma versão futura
![Page 41: Entity Beans Marco Antonio Arquiteto de Software Dezembro/2007](https://reader035.vdocuments.net/reader035/viewer/2022070312/552fc16b497959413d8ec510/html5/thumbnails/41.jpg)
Dúvidas?