Atualização de Dados de Serviço do Mediador de Dados EJB
Um pedido de mediador Enterprise JavaBeans (EJB) é uma consulta EJB composta. Você pode gravar um DataGraph atualizado novamente na origem de dados, utilizando o método applyChanges.
A atualização pode ser aplicada diretamente na origem de dados ou por meio de instâncias EJB.
Ao aplicar alterações por meio de instâncias EJB, poderá ser especificada uma classe opcional do adaptador no método applyChanges. Cada objeto de dados alterado é transmitido primeiro ao método applyChange do adaptador. O adaptador pode processar a própria alteração e retornar true, ou fazer com que o Mediador EJB processe a alteração retornando false.
O adaptador pode ser utilizado para personalizar a lógica de OCC (Optimistic Concurrency) ou processar alterações para ler apenas atributos DataGraph ou processar alterações que precisem de lógica de negócios.
Existem dois formulários do método applyChanges. O primeiro, applyChanges( DataObject) capta o DataGraph atualizado e executa as instruções SQL (Structured Query Language) insert, update e delete diretamente no banco de dados, transmitindo o contêiner EJB. O segundo formulário, applyChanges( DataObject, MediatorAdapter ) processa as atualizações utilizando instâncias e acessores EJB. Um valor nulo para o MediatorAdapter é suportado.
Quando Utilizar um Adaptador com applyChanges
- Utilize quando houver métodos de criação diferentes de create(PrimaryKey)
- Utilize quando os métodos de negócios tiverem que ser chamados em vez dos métodos setter CMP (Container Managed Persistence)
- Utilize quando for necessária a lógica de armazenamento em cache otimista especial
Como o Adaptador Trabalha
- São transmitidos novos DataObjects. O adaptador pode criar o objeto e definir os campos CMP. Os CMRs (Container-Managed Relationships) que fazem referência aos beans corporativos ainda não criados são adiados até a passagem 2.
- São transmitidos DataObjects novos e atualizados. CMRs adiados da passagem 1 podem ser definidos nesse momento.
- Os DataObjects excluídos são transmitidos.