Diretrizes: Identificando Beans de Entidade
Tópicos
Introdução
Essa diretriz focaliza a identificação de Beans de Entidade. Orientação adicional sobre
os Beans de Entidade é fornecida em Diretrizes: Beans de
Entidade. Orientação geral sobre EJBs é fornecida por Diretrizes:
EJBs (Enterprise JavaBeans).
Identificando Beans de Entidade
As classes de análise de entidade (consulte Artefato: Classe de
Análise) são sempre candidatas adequadas para os beans de entidade, uma vez que os beans de entidade são adaptados
para os dados persistentes. Os beans de entidade correspondem a entidades de negócios que contêm
o estado persistente. Eles fornecem serviços que implementam lógica específica da entidade de
negócios. Outra característica dos beans de entidade é que eles podem fornecer seus
serviços a vários clientes simultâneos. O contêiner EJB manipula a coordenação
desses clientes e de suas transações.
Os beans de entidade são utilizados para fornecer persistência, mas também podem encapsular lógica de
negócios. Geralmente, um bean de entidade deve conter apenas lógica de negócios relacionada
aos dados persistidos pelo bean de entidade e quaisquer objetos de dados dependentes. Geralmente,
a lógica entre os beans de entidade deve ser movida para os beans de sessão para minimizar
o acoplamento entre os beans de entidade.
Modelando Beans de Entidade
Consulte Diretrizes: Identificando EJBs (Enterprise JavaBeans).
Granularidade
Granularidade refere-se ao tamanho dos dados representados pelo EJB de entidade. A
granularidade apropriada pode depender da versão da especificação EJB que está sendo
utilizada.
Antes do EJB 2.0, os EJBs de entidade eram recomendados para sempre ter uma grande granularidade
- representando normalmente grandes agrupamentos de dados agrupados de várias tabelas de bancos
de dados. Isso porque cada EJB de entidade carregava código extra significativo - especificamente
código extra relacionado ao fato de ser remoto. Por exemplo, os itens de linha de uma fatura
ou as células de uma planilha são muito minuciosos e não deveriam ser acessados freqüentemente
em uma rede. Por outro lado, os agrupamentos lógicos das entradas de uma fatura ou um
subconjunto de células de uma planilha poderiam ser modelados como um EJB de entidade se fosse
necessária lógica de negócios adicional para os dados.
Isso é relativamente alterado no EJB 2.0. A introdução de interfaces locais
reduz alguns desses códigos extras e permite que os objetos minuciosos sejam modelados
como EJBs. As interfaces locais e remotas são descritas em Conceitos:
Visão Geral do J2EE: Enterprise JavaBeans. Uma interface local não tem o
código extra associado a uma interface remota, permitindo a interação mais eficiente
de beans firmemente acoplados. As interfaces locais são particularmente úteis para entidades
minuciosas que são utilizadas para compor uma entidade maior, com esta sendo responsável
pela criação e destruição das partes. Os clientes utilizam a interface remota
da entidade maior, que, por sua vez, utiliza as interfaces locais para interagir
com suas partes.
Contudo, se um bean de entidade tiver um relacionamento de composição com outra classe,
você poderá optar por modelar essa outra classe como uma classe Java comum, em vez de
como um bean de entidade. Se a persistência gerenciada por contêiner estiver sendo utilizada, essa classe
Java será referida como uma "classe de valor dependente". As classes de valor
dependente são mais simples e mais rápidas de desenvolver e testar que os beans de entidade e são
uma opção adequada, supondo que a classe composta não requer recursos do bean de entidade.
Algumas limitações das classes de valor dependente são:
- elas não podem conter referências ao bean de entidade
- são "obtidas" e "definidas" por valor, afetando um pouco o
desempenho, mas permite o acesso a partir da interface remota
Encapsulamento
Considere o agrupamento de um conjunto de beans de entidade relacionados com um bean de sessão de fachada
para fornecer uma interface lógica para a manipulação das entidades de negócios
correspondentes aos EJBs de entidade. Consulte Diretrizes:
Identificando Beans de Sessão.
Uma abordagem semelhante é um bean de entidade encapsular um conjunto de outros beans de
entidade locais, geralmente dependentes. Os clientes remotos acessam todos os dados por meio do bean de entidade
"principal". Padrões Núcleo de J2EE - Padrão de Entidade Composta ([ALU01]
discute essa alternativa - entretanto, recomenda o bean de sessão de fachada
como um método mais fácil para gerenciar os relacionamentos de beans de entidade.
|