Entity Beans. Introdução Entity Beans BMP



Documentos relacionados
Enterprise Java Bean. Enterprise JavaBeans

Stateful Session Beans

Enterprise JavaBeans. Java Deployment Course. por Jorge H. C. Fernandes DI-UFPE Julho de 1999

1 Criar uma entity a partir de uma web application que usa a Framework JavaServer Faces (JSF)

Prevayler. Perola. André Luís Sales de Moraes Juliana Keiko Yamaguchi Tatiana Yuka Takaki

J530 - Enterprise JavaBeans. Introdução a EJB e Stateless. Session Beans. argonavis.com.br. Helder da Rocha (helder@acm.org)

J2EE. J2EE - Surgimento

Persistência de dados com JPA. Hélder Antero Amaral Nunes

EJB. Session Beans. J2EE (C. Geyer) Introdução a SessionBean 1

Persistência de Dados em Java com JPA e Toplink

UFG - Instituto de Informática

4 - Padrões da Camada de Integração. Introdução

Programação por Objectos. Java

PadrãoIX. Módulo II JAVA. Marcio de Carvalho Victorino. Servlets A,L,F,M

Orientação a Objetos

UFG - Instituto de Informática

PHP INTEGRAÇÃO COM MYSQL PARTE 1

Adriano Reine Bueno Rafael Barros Silva

Especificação do 3º Trabalho

Laboratório EJB e J2EE Uma aplicação completa

3 SCS: Sistema de Componentes de Software

J530 - Enterprise JavaBeans. Relacionamentos em EJB com. CMP e BMP. argonavis.com.br. Helder da Rocha (helder@acm.org)

Banco de Dados. Sérgio Luiz Ruivace Cerqueira

Introdução ao SQL. Aécio Costa

Enterprise Java Beans (III)

Java 2 Enterprise Edition Uma aplicação J2EE completa

Orientação a Objetos

Descrição. Implementação. Departamento de Informática e Estatística Universidade Federal de Santa Catarina LAB 4 Transferência de Arquivos

Capítulo 04: Persistência com SQLite

Noções de. Microsoft SQL Server. Microsoft SQL Server

Introdução a Java. Hélder Nunes

ENTERPRISE JAVABEANS 3. Msc. Daniele Carvalho Oliveira

Como criar um EJB. Criando um projeto EJB com um cliente WEB no Eclipse

Mapeamento Lógico/Relacional com JPA

Enterprise Java Beans

Argo Navis J931 - Padrões de Design J2EE. Introdução. Objetivos de aprender padrões J2EE. Conhecer padrões para uso na plataforma J2EE

Faculdade Lourenço Filho - ENADE


Programação para Android. Aula 07: Persistência de dados Shared Preferences, Internal e External Storage

Introdução à Engenharia da Computação. Banco de Dados Professor Machado

UFG - Instituto de Informática

Gerenciamento de Transações

UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE ESCOLA AGRÍCOLA DE JUNDIAÍ EAJ - PRONATEC / REDE etec MÓDULO III DESENVOLVIMENTO PROFESSOR ADDSON COSTA

UFG - Instituto de Informática

EJB ainda tem vez no Java EE 6? Fernando Lozano Consultor 4Linux

Funções de um SO. Gerência de processos Gerência de memória Gerência de Arquivos Gerência de I/O Sistema de Proteção

Coleções. Page 1. Coleções. Prof. Anderson Augustinho Uniandrade

08/04/2013. Agenda. O Sistema CACHÉ. O Sistema CACHÉ. O Sistema CACHÉ. O Sistema CACHÉ

Disciplina de Banco de Dados Parte V

Prof.: Clayton Maciel Costa

JPA Passo a Passo. Henrique Eduardo M. Oliveira henrique@voffice.com.br. Globalcode Open4Education

SQL Linguagem de Definição de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

Sistemas Distribuídos na WEB (Plataformas para Aplicações Distribuídas) Sumário. Java 2 Enterprise Edition. J2EE (Java 2 Enterprise Edition)

Especificação do Trabalho

Introdução. Banco de dados. Por que usar BD? Por que estudar BD? Exemplo de um BD. Conceitos básicos

CPG: sincronização entre diferentes dispositivos

5 Framework para coordenação e mediação de Web Services para ambientes de aprendizado à distância

Java e Banco de Dados: JDBC, Hibernate e JPA

Evolução. Tópicos. Bancos de Dados - Introdução. Melissa Lemos. Evolução dos Sistemas de Informação Esquemas Modelos. Características de SGBDs

Conteúdo. Disciplina: INF Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo

HIBERNATE EM APLICAÇÃO JAVA WEB

Roteiro 9 - SQL Básico: chave estrangeira, operadores de comparação e operadores booleanos

Etc & Tal. Volume 2 - Número 1 - Abril 2009 SBC HORIZONTES 44

Persistência em Software Orientado a Objetos:

Android e Bancos de Dados

JPA: Persistência padronizada em Java

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA CURSO DE BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO

Para desenvolver a atividade a atividade desta aula utilizaremos o ambiente de desenvolvimento integrado NetBeans.

SQL Linguagem de Definição de Dados. Laboratório de Bases de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

Persistindo dados com TopLink no NetBeans

Oficina. Praça das Três Caixas d Água Porto Velho - RO

Manipulação de Banco de Dados com Java. Ms. Bruno Crestani Calegaro Maio/ 2015

Introdução Banco de Dados

Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi

Hoje é inegável que a sobrevivência das organizações depende de dados precisos e atualizados.

Uma Abordagem sobre Mapeamento Objeto Relacional com Hibernate

Aula 1 Acesso a Banco de Dados

ATRIBUTOS PRIVADOS 6. ENCAPSULAMENTO MÉTODOS PRIVADOS MÉTODOS PRIVADOS

Coleções. Conceitos e Utilização Básica. c Professores de ALPRO I 05/2012. Faculdade de Informática PUCRS

Grupo I [6v] Considere o seguinte extracto de um programa de definição de uma calculadora apenas com a função soma de dois valores reais

3 - Padrões da Camada de Negócios. Introdução. A camada de negócios encapsula a lógica central da aplicação. Considerações de design incluem

UTILIZAÇÃO DA TECNOLOGIA ENTERPRISE JAVABEANS NO DESENVOLVIMENTO DE APLICAÇÕES DISTRÍBUIDAS

ADDRESS RESOLUTION PROTOCOL. Thiago de Almeida Correia

GBC043 Sistemas de Banco de Dados. Introdução. Ilmério Reis da Silva UFU/FACOM

CICLO DE VIDA DE UM BD

Sistemas Distribuídos: Conceitos e Projeto Java RMI

Aula 5. Carlos Eduardo de Carvalho Dantas

Laboratório de Banco de Dados Aula 1 Acesso a Banco de Dados. Prof. Josenildo Silva jcsilva@ifma.edu.br

Hibernate. Mapeamento Objeto-Relacional. Prof. Anselmo Cardoso Paiva Prof. Geraldo Braz Junior

Transcrição:

Entity Beans Introdução Entity Beans BMP Agenda Conceitos básicos de persistência Definição de entity beans Recursos Conceitos de programação Típos de entity beans Exemplos de entity beans usando Bean- Managed Persistence 1

Introdução Entity beans são objetos persistentes que podem ser armazenados em meio persistente de armazenamento Pode-se fazer modelagem de dados como Entity Beans Persistência Uma maneira de armazenar o estado de objetos Java é através da serialização Vantagem: facilidade de leitura e gravação: objeto pode ser enviado pela rede, armazenado em um banco ou árvore JNDI Desvantagem: inviabilidade de realização de pesquisa sobre campos dos objetos: qualquer pesquisa necessitaria a desserialização de cada objeto para obter os campos pesquisados Conclusão: para persistência de grande quantidade de dados que precisam de expor seus dados como atributos de pesquisa, serialização não é viável (solução seria serialização em XML!) 2

Persistência ( ) Soluções alternativas Bancos de dados relacionais: oferecem recursos poderosos e eficientes de busca, mas, não são orientados a objeto (SQLJ, JDBC) Bancos de dados orientados a objeto Mapeamento objeto-relacional (O/R Mapping) Mapeamento Objeto-Relacional Em vez de serializar os objetos, decompomos cada um em suas partes e guardamos suas partes no banco NConta Classe Conta String Nconta String Titular Double Saldo Titular Saldo Instância de Conta Nconta = 3 Titular = Maria Saldo = 27500 1 2 3 João Roberto Maria 1000 1500 2750 Tabela de contas Banco relacional 3

O que é um Entity Bean? Session beans modelam a lógica relacionada a tarefas realizadas pela aplicação Entity beans modelam entidades São componentes que representam dados Session beans podem guardar informações em bancos de dados mas não "representam" dados. Entity beans são os dados O que é um Entity Bean?( ) Permitem que se manipule com objetos ignorando a forma de armazenamento A especificação não define nenhum tipo obrigatório Duas partes Entity bean instance: dados na memória (representa uma instância da classe do Entity Bean) Entity bean data: dados fisicamente armazenados no banco 4

Partes de um entity bean Como qualquer EJB, um Entity Bean possui Uma interface Home ou LocalHome Uma interface Remote ou Local Um deployment descriptor Uma classe EJB Partes de um entity bean(...) As diferenças são A classe do EntityBean está mapeada à uma definição de entidade de um esquema de banco de dados (uma tabela, por exemplo) Há métodos especiais que lidam com a sincronização do EntityBean com os banco de dados Um entity bean tem uma classe Primary Key que permite identificar univocamente sua instância 5

Entity Beans sobrevivem Entity Beans são objetos persistentes Sobrevivem à quedas do servidor ou banco de dados Por serem apenas representação de dados de um meio de armazenamento, o bean pode ser reconstruido lendo seus dados do banco. Ciclo de vida muito longo Existem enquanto existir a tabela ou entidade que representam seus dados no banco Sincronismo Uma instância de um entity bean é uma visão do banco de dados A instância está sempre sincronizada com os dados do banco. Container possui mecanismo que faz a atualização após cada alteração Todas as classes implementam métodos que realizam essa atualização Container chama os métodos automaticamente 6

Sincronismo void ejbload() lê os dados do banco para dentro do entity bean void ejbstore() grava os dados do entity bean no banco ejbload() e ejbstore() Este ciclo de métodos de negócio ejbload() ejbstore() pode ser repetido muitas vezes. EJB Container / Server 1 - ejbload 4 - ejbstore Instância do Entity Bean 3 -Métodos de Negócio 2 Lê do banco 5 Escreve no banco Dados do Entity Bean Banco de Dados 7

Uso e reuso de Entity Beans Instâncias diferentes de entity beans podem representar os mesmos dados Transações permitem isolamento necessário para evitar corrupção Mesmas instâncias podem representar dados diferentes Uso e reuso de Entity Beans ( ) EJB Container Server Cliente 1 Linair Cliente 2 Luis Cliente 3 Flavia Interface remota Interface remota Interface remota Objeto EJB 1 Conta: Linair Objeto EJB 2 Conta: Luis Objeto EJB 3 Conta: Flavia Bean Pool Instâncias de Entity Beans O EJB Container pode atribuir dinamicamente instâncias de Entity Beans para representar diferentes dados. Pooling de Entity Beans no EJB Container 8

Duas formas de persistência Entity beans podem ser associados ao meio de armazenamento de duas formas BMP - Bean Managed Persistence O bean deve usar uma API (JDBC, SQLJ) para fazer as chamadas de UPDATE no ejbstore(), INSERT no ejbcreate(), SELECT no ejbload(), etc. (caso use banco relacional) CMP - Container Managed Persistence O container faz um mapeamento dos objetos a entidades em um banco Métodos de ciclo de vida, campos de dados e métodos de negócio são gerados automaticamente pelo container Criação de Entity Beans Como Entity Beans são os dados, criar um bean é inserir dados em um banco; remover um bean é apagar esses dados Entity Beans são criados através do EJBObject (proxy) via sua interface Home. Para cada método create da interfacehome deve haver um método ejbcreate correspondente no Bean: Na Home: public Account create(string id, String owner) No Bean: public AccountPK ejbcreate(string id, String owner) {} Observe que os tipos retornados são diferentes! 9

Remoção de Entity Beans Para destruir um bean, é preciso chamar remove() em Home ejbremove() deve localizar a chave primária do bean atual para removê-lo através o método getprimarykey() do contexto. ejbcreate() EJB Container Server Código Cliente 1:Create() 6: Retorna Objeto EJB Objeto Home 5: Cria Objeto EJB Objeto EJB 2:ejbCreate() 4:Retorna Primary Key Instância de Entity Bean 3:Cria Dados no Banco Relação entre create() e ejbcreate(). O diagrama omite algumas etapas secundárias e assume persistência de beans gerenciada. Dados do Entity Bean 10

ejbremove() Código Cliente 1:remove() 1: remove() Objeto Home Objeto EJB EJB Container Server 2:ejbRemove() 2:ejbRemove() Instância de Entity Bean 3:Remove Dados do Banco Relação entre remove() e ejbremove(). Note que remove() pode ser chamado tanto no objeto Home como no EJB Destruindo uma representação de dados de um Entity Bean Dados do Entity Bean Entity Beans podem ser localizados Entity Beans nem sempre precisam ser criados. Podem já existir no banco Neste caso, devem ser localizados Todo bean pode ser localizado através de sua chave primária Métodos find() adicionais podem ser criados para localizar beans de acordo com outros critérios Finder methods No home: findbyxxx() No EJB: ejbfindbyxxx() Deve existir pelo menos o findbyprimarykey() Método create() é opcional 11

Entity Beans podem ser modificados sem EJB Não é preciso usar EJB para modificar o conteúdo de Entity Beans Como Entity Beans representam dados externos, se esses dados puderem ser alterados externamente, sua mudança será refletida no Entity Bean Riscos: cache de entity beans pode causar inconsistência Entity Beans podem ser modificados sem EJB Modificando manualmente a representação de um Entity Bean no banco de dados EJB Container Server Entity Beans Mapeamento O / R Dados do Entity Bean Aplicação Existente Modificações Diretas no Banco Banco de Dados Relacional 12

Classe Primary Key Valor que identifica de forma única o objeto no banco de dados Implementa java.io.serializable Implementa hashcode() equals() tostring() Contextos das Entity Todo bean possui um objeto de contexto No caso do Entity Bean é o javax.ejb.entitycontext Através dele pode-se chamar os métodos getejbobject(): retorna uma referência para o EJBObject (interceptador, que implementa Remote) getejblocalobject(): retorna uma referência local para o interceptador getprimarykey(): retorna a chave primária associada com a entidade atual. getprimarykey() é essencial em ejbload() e ejbremove() descobrir qual a instância que será carregada ou removida, respectivamente 13

Métodos da Interface Home Remote create(...) Retorna uma referência para o bean criado Pode retornar uma Collection (ou Set) de referências Opcional Remote findxxx(...) Retorna uma referência para bean existente Pode retornar uma Collection (ou Set) de referências Deve haver pelo menos findbyprimarykey() tipo xxx(...) Método chamado na interface Home não se refere a nunhuma instância particular Deve ter um correspondente ejbhomexxx() no bean com mesmos argumentos e tipo de retorno Métodos de um Entity Bean (1) void setentitycontext(entitycontext ctx) Obtém o contexto do Entity Bean. Pode ser usado para obter a chave primária da instância atual PK ejbfindxxx(...) Deve haver pelo menos ejbfindbyprimarykey(), que devolve a própria PrimaryKey Cada método ejbfind() deve devolver ou a chave primária ou uma Collection de PKs (pode ser Set) tipo ejbhomexxx(...) Métodos de Home que não se referem a nenhuma instância em particular. XXX é o nome do método na interface Home. 14

Métodos de um Entity Bean (2) PK ejbcreate(...) Não precisa existir um ejbcreate() Deve retornar PK ou Collection de PKs (pode ser Set) void ejbpostcreate(...) Deve haver um para cada ejbcreate() com mesmos argumentos. void ejbactivate() Métodos de um Entity Bean (3) Chamado logo após a ativação do bean void ejbload() Chamado para ou logo depois que o bean for povoado com os dados oriundos do banco antes de qualquer alteração nos dados do bean void ejbstore() Chamado antes que o bean seja armazenado no banco depois de qualquer alteração nos dados do bean void ejbpassivate() Chamado antes da passivação do bean 15

void ejbremove() Métodos de um Entity Bean (4) Chamado antes (ou para) que os dados sejam removidos do banco void unsetentitycontext() destrói instância será recolhida pelo garbage collect. destrói o objeto, mas não o entity bean (que são os dados) Não Existe O ciclo de vida de um Entity bean com persistência gerenciada. Ativando o seu bean 1: newinstance() 2: setentitycontext() ejbhome() Pooled 1: unsetentitycontext() 2: JVM WIII Garbage Colect e Call finalize() ejbfind() Passivando o seu bean ejbcreate() ejbpostcreate() 1: ejbactivate() 2: ejbload() 1: ejbstore() 2: ejbpassivate() ejbremove() ejbload() Pronto Método de Negócio ejbstore() Cada chamada de método mostrada é uma invocação de container para a instância do bean. 16

Diagrama de Classe de um Entity Bean <<Interface>> javax.ejb.ejbhome <<Interface>> BankBeanHome <<Interface>> javax.ejb.ejbobject <<Interface>> BankBeanRemote javax.ejb.entitybean activate() passivate() remove() load() store() setentitycontext(entitycontext) unsetentitycontext() BankBean implements the business methods of the BankBeanRemote interface. BankBean Diagrama de Sequência para encontrar um objeto EJB (BMP) Classes fornecidas pelo container : client EJB home EJB object entity bean instance database find<method>(args) ejbfind<method>(args) search DB new 17