Container Managed Persistent Bean Kellyton Brito Projeto Compose - 27.06.2003.
Transcript of Container Managed Persistent Bean Kellyton Brito Projeto Compose - 27.06.2003.
![Page 2: Container Managed Persistent Bean Kellyton Brito Projeto Compose - 27.06.2003.](https://reader035.fdocuments.in/reader035/viewer/2022062623/552fc10d497959413d8c4aa9/html5/thumbnails/2.jpg)
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.](https://reader035.fdocuments.in/reader035/viewer/2022062623/552fc10d497959413d8c4aa9/html5/thumbnails/3.jpg)
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.](https://reader035.fdocuments.in/reader035/viewer/2022062623/552fc10d497959413d8c4aa9/html5/thumbnails/4.jpg)
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.](https://reader035.fdocuments.in/reader035/viewer/2022062623/552fc10d497959413d8c4aa9/html5/thumbnails/5.jpg)
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.](https://reader035.fdocuments.in/reader035/viewer/2022062623/552fc10d497959413d8c4aa9/html5/thumbnails/6.jpg)
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.](https://reader035.fdocuments.in/reader035/viewer/2022062623/552fc10d497959413d8c4aa9/html5/thumbnails/7.jpg)
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.](https://reader035.fdocuments.in/reader035/viewer/2022062623/552fc10d497959413d8c4aa9/html5/thumbnails/8.jpg)
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.](https://reader035.fdocuments.in/reader035/viewer/2022062623/552fc10d497959413d8c4aa9/html5/thumbnails/9.jpg)
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.](https://reader035.fdocuments.in/reader035/viewer/2022062623/552fc10d497959413d8c4aa9/html5/thumbnails/10.jpg)
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.](https://reader035.fdocuments.in/reader035/viewer/2022062623/552fc10d497959413d8c4aa9/html5/thumbnails/11.jpg)
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.](https://reader035.fdocuments.in/reader035/viewer/2022062623/552fc10d497959413d8c4aa9/html5/thumbnails/12.jpg)
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.](https://reader035.fdocuments.in/reader035/viewer/2022062623/552fc10d497959413d8c4aa9/html5/thumbnails/13.jpg)
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.](https://reader035.fdocuments.in/reader035/viewer/2022062623/552fc10d497959413d8c4aa9/html5/thumbnails/14.jpg)
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.](https://reader035.fdocuments.in/reader035/viewer/2022062623/552fc10d497959413d8c4aa9/html5/thumbnails/15.jpg)
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.](https://reader035.fdocuments.in/reader035/viewer/2022062623/552fc10d497959413d8c4aa9/html5/thumbnails/16.jpg)
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.](https://reader035.fdocuments.in/reader035/viewer/2022062623/552fc10d497959413d8c4aa9/html5/thumbnails/17.jpg)
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.](https://reader035.fdocuments.in/reader035/viewer/2022062623/552fc10d497959413d8c4aa9/html5/thumbnails/18.jpg)
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.](https://reader035.fdocuments.in/reader035/viewer/2022062623/552fc10d497959413d8c4aa9/html5/thumbnails/19.jpg)
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.](https://reader035.fdocuments.in/reader035/viewer/2022062623/552fc10d497959413d8c4aa9/html5/thumbnails/20.jpg)
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.](https://reader035.fdocuments.in/reader035/viewer/2022062623/552fc10d497959413d8c4aa9/html5/thumbnails/21.jpg)
CMP – Dúvidas
● Dúvidas?
![Page 22: Container Managed Persistent Bean Kellyton Brito Projeto Compose - 27.06.2003.](https://reader035.fdocuments.in/reader035/viewer/2022062623/552fc10d497959413d8c4aa9/html5/thumbnails/22.jpg)
Referências➔ Mastering Enterprise JavaBeans, 2nd Edition