Assim como uma tabela em um banco de dados relacional, um Bean de entidade pode estar relacionado a outros Beans de entidade. Com a persistência gerenciada por Bean, os relacionamentos são implementados pelo código que você escreve. Mas com a persistência gerenciada por recipiente, o recipiente EJB cuida dos relacionamentos por você.
Considere, por exemplo, o cmpcustomer entregue com o J2EE JDK. O exemplo define os relacionamentos entre clientes, endereços e inscrições. Cada cliente pode ter um ou mais endereços. Um cliente pode ter várias inscrições ou nenhuma. Da mesma forma, um a única inscrição pode estar associada a vários clientes.
Para que o exemplo acima dê bom resultado, os relacionamentos entre os Beans de entidade que representam estas tabelas de banco de dados devem ser configurados corretamente. Ao gerar Beans de entidade CMP de um banco de dados existente, o IDE configura automaticamente os relacionamentos CMP do módulo e os campos CMP e cria um mapeamento padrão usado pelo servidor de aplicativos Sun Java System.
Os relacionamentos entre banco de dados podem ser unidirecionais ou multidirecionais. Por exemplo, no exemplo cmpcustomer acima, o relacionamento entre os clientes e os endereços é unidirecional porque a tabela de clientes faz referência à tabela de endereços, mas a tabela de endereços não faz referência à tabela de clientes. Por outro lado, o relacionamento entre inscrições e clientes é multidirecional.
A multiplicidade (também conhecida como cardinalidade) descreve quantas instâncias podem haver em cada lado do relacionamento. Os Beans de entidade podem apresentar a seguinte multiplicidade:
Em geral, a existência de uma tabela depende da existência da tabela à qual faz referência. No exemplo cmpcustomer acima, você pode adicionar e excluir endereços individuais de um cliente. Entretanto, pelo fato de um endereço estar associado a um cliente, ao excluir um cliente, você também estará excluindo automaticamente todos os endereços associados a este cliente.
O servidor de aplicativos toma conta disso automaticamente através da configuração de exclusão em cascata. Ao ativar a exclusão em cascata em um relacionamento, todas as instâncias de Bean relacionadas serão excluídas quando o Bean que se refere a elas for excluído.
Ao gerar Beans de entidade CMP de um banco de dados, o IDE registra automaticamente todas os relacionamentos gerenciados por recipiente baseados nos relacionamentos do banco de dados. Você pode gerenciar os relacionamentos CMP no descritor de implantação ejb-jar.xml do módulo EJB.