container managed persistent bean kellyton brito projeto compose - 27.06.2003

22
Container Managed Persistent Bean Kellyton Brito <[email protected]> Projeto Compose - 27.06.2003

Upload: internet

Post on 17-Apr-2015

108 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Container Managed Persistent Bean Kellyton Brito Projeto Compose - 27.06.2003

Container Managed Persistent Bean

Kellyton Brito <[email protected]>

Projeto Compose - 27.06.2003

Page 2: Container Managed Persistent Bean Kellyton Brito Projeto Compose - 27.06.2003

CMP – Motivação

Desenvolver beans portáveis, com implementação da lógica persistente

independente da lógica do bean.

Page 3: Container Managed Persistent Bean Kellyton Brito Projeto Compose - 27.06.2003

CMP – Conceito Básico

● O desenvolvedor não implementa a lógica persistente (operações de armazenamento)

● A lógica persistente é implementada pelo EJB Container de forma automatizada

Page 4: Container Managed Persistent Bean Kellyton Brito Projeto Compose - 27.06.2003

CMP – Entity Beans como Subclasses

● Torna o Bean Portável● Separa o Entity Bean de sua representação

persistente● Superclasse contém a lógica do bean e é

implementada pelo desenvolvedor● Subclasse contém a lógica de persistência e é

gerada pelo Container

Page 5: Container Managed Persistent Bean Kellyton Brito Projeto Compose - 27.06.2003

CMP – Atributos

● Na Superclasse não é declarado nenhum atributo persistente.

● Atributos do bean mantidos na Subclasse● Superclasse declarada como classe abstrata para

acessar métodos da subclasse● Atributos descritos no descritor xml

Page 6: Container Managed Persistent Bean Kellyton Brito Projeto Compose - 27.06.2003

CMP – Definição de Atributos● Atributos definidos no descritor xml...

<cmp-version>2.x</cmp-version>

<abstract-schema-name>ProductBean</abstract-schema-name>

<cmp-field>

<field-name>chave</field-name>

</cmp-field>

<cmp-field>

<field-name>nome</field-name>

</cmp-field>

<cmp-field>

<field-name>saldo</field-name>

</cmp-field>

...

Page 7: Container Managed Persistent Bean Kellyton Brito Projeto Compose - 27.06.2003

CMP – Acesso aos atributos

● Métodos de acesso aos atributos são mantidos na subclasse

● Métodos de get/set “triviais” são gerados automaticamente pelo container no formato

“get” + “nomeDoCampo”

(1ª letra no nome em maiúscula)

● Métodos de acesso aos atributos definidos na SuperClasse como abstratos

● Outros métodos definidos de maneira tradicional

Page 8: Container Managed Persistent Bean Kellyton Brito Projeto Compose - 27.06.2003

CMP – Acesso aos Campos na SuperClasse

public abstract class meuBean implements EntityBean {

protected EntityContext ctx;

public abstract int getChave();

public abstract void setChave(int chave);

public abstract String void getNome();

public abstract void setNome(String nome);

...

}

Page 9: Container Managed Persistent Bean Kellyton Brito Projeto Compose - 27.06.2003

CMP – Métodos de Busca

● Chamados pelo Home Object● EJB Container implementa os métodos de busca● Descrição da busca no descritor xml.

– Facilita a portabilidade● Utilização do EJB-QL: SQL orientado a objeto● Pode utilizar ejbSelect() para efetuar operações

sobre um conjunto entity beans

Page 10: Container Managed Persistent Bean Kellyton Brito Projeto Compose - 27.06.2003

CMP – Implementação das Buscas● Definição da “implementação” da busca feita no

descritor (xml)...

<query>

<query-method>

<method-name>findByName</method-name>

<method-params>

<method-param>java.lang.String</method-param>

</method-params>

</query-method>

<ejb-ql>

<![CDATA[SELECT OBJECT(a) FROM ProductBean AS a WHERE name = ?1]]>

</ejb-ql>

</query>...

Page 11: Container Managed Persistent Bean Kellyton Brito Projeto Compose - 27.06.2003

CMP – Arquivos Gerados● Pelo desenvolvedor do Bean:

– Remote Interface– Local Interface– Home Interface– Local Home Interface– Bean Abstract Class– Primary Key Class– Deployment Descriptor– *Container-Specific Deployment Descriptor

Page 12: Container Managed Persistent Bean Kellyton Brito Projeto Compose - 27.06.2003

CMP – Arquivos Gerados● Pelo Container (automaticamente)

– Beam SubClass– EJB Local Object– Ejb Object– Home Object– Local Home Object

Page 13: Container Managed Persistent Bean Kellyton Brito Projeto Compose - 27.06.2003

CMP – Remote Interface● Contém a assinatura dos métodos que o cliente

pode acessar

public interface Product extends EJBObject {

public String getNome() throws RemoteException;

public void setNome(String name) throws RemoteException;

...

}

Page 14: Container Managed Persistent Bean Kellyton Brito Projeto Compose - 27.06.2003

CMP – Local Interface● Contém a assinatura dos métodos que o cliente

pode acessar de forma local● A única diferença para a Remote Interface é que

não lança RemoteException

public interface Product extends EJBLocalObject {

public String getNome();

public void setNome(String nome);

...

}

Page 15: Container Managed Persistent Bean Kellyton Brito Projeto Compose - 27.06.2003

CMP – Home Interface

● Contém os métodos de “create”, buscas e ordenação

public interface ProductHome extends EJBHome {

Product create (tipo1 parametro1, tipo2 parametro2, tipo3 parametro3) throws CreateException, RemoteException)

public Product findByPrimaryKey (ProductPK key) throws FinderExceptiom RemoteException;

public Collection findByName (String name) throws FinderExceptiom RemoteException;

...

}

Page 16: Container Managed Persistent Bean Kellyton Brito Projeto Compose - 27.06.2003

CMP – Home Interface● Contém os métodos de “create”, buscas e

ordenação● A única diferença para a Home Interface é que

não lanca RemoteExceptionpublic interface ProductHome extends EJBHome {

Product create (tipo1 parametro1, tipo2 parametro2, tipo3 parametro3) throws CreateException, RemoteException)

public Product findByPrimaryKey (ProductPK key) throws FinderExceptiom RemoteException;

public Collection findByName (String name) throws FinderExceptiom RemoteException;

...

}

Page 17: Container Managed Persistent Bean Kellyton Brito Projeto Compose - 27.06.2003

CMP – Primary Key

Classe que contém a chave primária do entity bean.

Page 18: Container Managed Persistent Bean Kellyton Brito Projeto Compose - 27.06.2003

CMP – Bean● Contém:

– Métodos abstratos de get/set:public abstract String getName();

public abstract void setName(String name);

– Métodos “padrões” chamados pelo Containerpublic void ejbActivate() {}

public void ejbRemove() {}

public void ejbPassivate() {}

public void ejbLoad() {}

public void ejbStore() {}

public void setEntityContext(EntityContext ctx) {}

public void unsetEntityContext() {}

public void ejbPostCreate (“parametros do create”) {}

public void ejbCreate (“parametros do create”){}

Page 19: Container Managed Persistent Bean Kellyton Brito Projeto Compose - 27.06.2003

CMP – Descritor XML● A “alma” do CMP

– Definições Gerais<ejb-name></ejb-name>

<home></home>

<persistent-type>Container</persistent-type>

Definições de campos<cmp-field>

<field-name></field-name>

</cmp-field>

– Definições de Queries– Assembly descriptor: ???

Page 20: Container Managed Persistent Bean Kellyton Brito Projeto Compose - 27.06.2003

CMP – Discussão

● O gerenciamento da persistência feito pelo Container não prejudica por demais o desempenho?

Page 21: Container Managed Persistent Bean Kellyton Brito Projeto Compose - 27.06.2003

CMP – Dúvidas

● Dúvidas?

Page 22: Container Managed Persistent Bean Kellyton Brito Projeto Compose - 27.06.2003

Referências➔ Mastering Enterprise JavaBeans, 2nd Edition