• Nenhum resultado encontrado

Entity Beans. Introdução Entity Beans BMP

N/A
N/A
Protected

Academic year: 2021

Share "Entity Beans. Introdução Entity Beans BMP"

Copied!
17
0
0

Texto

(1)

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

(2)

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!)

(3)

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

2750 Maria 3 1500 Roberto 2 1000 João 1 Saldo Titular NConta

Tabela de contas – Banco relacional Classe Conta String Nconta String Titular Double Saldo Instância de Conta Nconta = 3 Titular = Maria Saldo = 27500

(4)

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:

(5)

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

(6)

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

(7)

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.

1 - ejbLoad 4 - ejbStore Dados do Entity Bean 5 – Escreve no banco 2 – Lê do banco Banco de Dados Instância do

Entity Bean 3 -Métodosde Negócio

(8)

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 (…)

O EJB Container pode atribuir dinamicamente instâncias de Entity Beans para representar

Instâncias de Entity Beans Objeto EJB 1 Conta: Linair Objeto EJB 2 Conta: Luis Objeto EJB 3 Conta: Flavia

EJB Container Server

Bean Pool Cliente 1 Linair Cliente 2 Luis Cliente 3 Flavia Interface remota Interface remota Interface remota

(9)

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 Accountcreate(String id, String owner)

„ No Bean:

„ publicAccountPKejbCreate(String id, String owner) {}

(10)

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

Instância de Entity Bean Objeto Home Objeto EJB Código Cliente 1:Create() Dados do Entity Bean 2:ejbCreate() 4:Retorna Primary Key 5: Cria Objeto EJB 3:Cria Dados no Banco 6: Retorna Objeto EJB

Relação entre create() e ejbCreate().

O diagrama omite algumas etapas secundárias e assume persistência

(11)

ejbRemove()

Instância de Entity Bean

EJB Container Server

Objeto Home Objeto EJB Código Cliente 1:remove() Dados do Entity Bean 2:ejbRemove() 2:ejbRemove() 3:Remove Dados do Banco 1: remove()

Destruindo uma representação de dados de um Entity Bean

Relação entre remove() e ejbRemove().

Note que remove() pode ser chamado tanto no objeto Home como no EJB

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

(12)

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

Dados do Entity Bean

Banco de Dados Relacional Aplicação

Existente Entity

Beans

EJB Container Server

Mapeamento O / R

Modificações Diretas no

(13)

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 é ojavax.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,

(14)

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.

(15)

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

()

„ 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

(16)

Métodos de um Entity Bean (4)

„

void

ejbRemove

()

„ 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)

O ciclo de vida de um Entity bean com persistência gerenciada.

Não Existe Pronto Pooled ejbHome() ejbFind() ejbRemove() ejbStore() ejbLoad() ejbCreate() ejbPostCreate() 1: newInstance()

2: setEntityContext() 1: unsetEntityContext()2: JVM WIII Garbage Colect e Call finalize()

1: ejbActivate()

2: ejbLoad() 1: ejbStore()

2: ejbPassivate()

Ativando o seu

bean Passivandoo seu bean

Cada chamada de método mostrada é uma invocação de

(17)

Diagrama de Classe de um Entity

Bean

javax.ejb.EntityBean activate() passivate() remove() load() store() setEntityContext(EntityContext) unsetEntityContext() BankBean BankBeanRemote <<Interface>> javax.ejb.EJBObject<<Interface>>

BankBean implements the business methods of the BankBeanRemote interface. javax.ejb.EJBHome<<Interface>>

BankBeanHome <<Interface>>

Diagrama de Sequência para encontrar um

objeto EJB (BMP)

client EJB home EJB object entity bean instance

database

Classes fornecidas pelo container :

find<METHOD>(args) ejbFind<METHOD>(args)

search DB new

Referências

Documentos relacionados

Buscando analisar o grau de variância entre os dentistas, em relação à escolha de dentes artificiais mais apropriados para seus pacientes, Sellen, Jagger e Harrison (2002)

No discurso de Fedro ele trata de Eros como um mega deus, “Eros é um 

1) escolha do tema; 2) revisão de literatura; 3) justificativa; 4) formulação do problema; 5) determinação de objetivos; 6) metodologia; 7) coleta de dados; 8) tabulação

Dispõe sobre a obrigatoriedade para que os estabelecimentos de assistência técnica autorizada e similares situados no município fi xem em local visível placa com o disposto no

A estrutura analítica do projeto (EAP) ou WBS, acrônimo mais adotado no mundo do gerenciamento de projetos, é uma ferramenta muito aplicada para demonstrar

Concomitantemente a isso, em sua atuação como advogada voluntária no Grupo de Assessoria a Adolescentes Selecionados pelo Sistema Penal Juvenil (G10), pertencente

OBJETO: Proporcionar a estudantes da UFRN, regularmente matriculados e com efetiva frequência nos Diversos Cursos regulares da UFRN, à realização de estágio curricular

Então, quando a nossa forma de julgar, ou quando as nossas ideias começam a se tornar uma consciência que se dilata porque descobre uma coisa, isso gera também o método