entity beans n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Entity Beans PowerPoint Presentation
Download Presentation
Entity Beans

Loading in 2 Seconds...

play fullscreen
1 / 41

Entity Beans - PowerPoint PPT Presentation


  • 73 Views
  • Uploaded on

Entity Beans. Marco Antonio Arquiteto de Software Dezembro/2007. 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.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Entity Beans' - rafal


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
entity beans

Entity Beans

Marco Antonio

Arquiteto de Software

Dezembro/2007

introdu o
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.
considera es
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.
tecnologias concorrentes
Tecnologias concorrentes
  • Existem diversos frameworks de mapeamento de dados, os mais importantes são:
    • Hibernate
    • TopLink
    • EJB3
new entity bean
New entity bean
  • No exemplo, vamos criar o entity bean Cliente (cpf, nome, endereco, telefone)
entity bean
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
atributos do ejb
Atributos do EJB
  • O EJB irá criar a tabela Cliente com os seguintes atributos:
    • Cpf
    • Nome
    • Endereco
    • Telefone
passos finais
Passos finais
  • O EJB está pronto
  • O próximo passo é configurar o banco de dados
configura o do xdoclet
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
xdoclet
XDoclet
  • Observe algumas configurações importantes:
    • Datasource
    • Createtable
m todos de inclus o
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
ejbcreate
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);

returnnull;

}

ejbpostcreate
ejbPostCreate

publicvoid ejbPostCreate(String cpf, String nome, String endereco, String telefone, Double saldo, Double limite) throws javax.ejb.CreateException {

}

datasource
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).
sisban ds xml
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>

sisban ds xml1
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)
driver jdbc do postgresql
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
administrator do postgresql
Administrator do PostgreSQL
  • Após a instalação do Postgre, abra o pgAdmin
senha
Senha
  • Informe a senha
database
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)
deploy e cria o das tabelas
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
mensagem de sucesso
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
dados da tabela
Dados da tabela
  • Clique na opção View the Data para consultar os dados da tabela
clientes
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
inclus o
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
dados da tabela1
Dados da tabela
  • Atualize a tela de consulta e acompanhe a inclusão dos registros
atualiza o
Atualização

package net.sistemabancario.entidades.cliente;

import net.sistemabancario.entidades.Cliente;

import net.sistemabancario.entidades.ClienteHome;

import net.sistemabancario.entidades.ClienteUtil;

publicclass TesteAlteracaoCliente {

publicstaticvoid 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();

}

}

}

exclus o
Exclusão

package net.sistemabancario.entidades.cliente;

import net.sistemabancario.entidades.ClienteHome;

import net.sistemabancario.entidades.ClienteUtil;

publicclass TesteExclusaoCliente {

publicstaticvoid main(String[] args) {

try {

ClienteHome home = ClienteUtil.getHome();

home.remove("83286950149");

System.out.println("Cliente excluido com sucesso");

} catch (Exception e) {

e.printStackTrace();

}

}

}

consulta todos
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;

publicclass TesteConsultaClientes {

publicstaticvoid 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();

}

}

}

exerc cios
Exercícios
  • Crie o entity bean para ContaCorrente (numero, saldo, limiteDeChequeEspecial)
    • O código do cliente será implementado em uma versão futura