BISDAO Legacy

De BIS Wiki
Revisão de 17h09min de 7 de setembro de 2015 por Rodrigogml (discussão | contribs)
Ir para navegação Ir para pesquisar

O BISFrameWork oferece uma estrutura de persistência combinada com os recursos da JPA para simplificar, ou mesmo evitar, a camada de persistência dos módulos. Essa estrutura prevê métodos para insert, update, delete e "find".

Seu funcionamento compreende os seguintes itens:

  • BISVO - Um herdeiro de BISVO que represente a entidade de persistência. O objeto a ser manipulado no banco de dados.
  • BISMO - MatchObject para os métodos de find. O MatchObject representa um objeto de filtro para a busca no banco de dados.
  • BISOrderBy - Objeto usado nos métodos de find que retornam mais de 1 item para descrever a ordem dos objetos.
  • BISVO_ - O MetaObject deve ser utilizado para indicar os atirbutos que queremos que o método de find busque automaticamente para popular cada objeto. Normalmente os métodos de find já trazem o VO completamente populado, mas em casos de relacionamento marcados como Lazy o JPA não os trás automaticamente. Quando o carregamento deste objeto for desejado o herdeiro do BISVO_ correspondente ao herdeiro do BISVO passado no construtor do BISDAO deve ser utilizado para indicar o caminho das propriedades que obrigatoriamente devem ser populadas. Em geral, se uma propriedade de um VO é solicitada todas as outras propriedades do mesmo VO que estão na mesma tabela serão poluladas automaticamente.


Padrão de Nomes
Para simplificação da programação em equipe e manutenção posterior lembre-se do padrão de nome dos objetos e classes adotados no BIS descritos no tópico Convenção de Nome do BIS.


Extensão da BISDAO
Normalmente não é necessário herdar a BISDAO em outra classe. Bastando a instância-la e passando a classe adequada em seu construtor os métodos padrões do BISDAO já se tornam acessíveis.

Ainda assim, é possível herdar BISDAO em uma classe específica para a criação de métodos mais específicos que interagem diretamente com o JPA. Em geral estes métodos só serão necessários para ganhos de performance para métodos de consulta ou atualização do banco de dados.


Objetos em Cadeia
Se ContactVO contiver outros objetos (VOs) com informações, como por exemplo uma coleção de AddressVO, a camada de persistência criada para o ContactVO pode ser utilizado para realizar as operações em cadeia. Para isso precisa apenas fazer os mapeamentos do JPA entre os objetos.


Objetos em Cadeia
Para o mesmo exemplo citado acima, um ContactVO que tenha uma coleção de AddressVO, não se deve persistir em cadeia caso o AddressVO seja um objeto autonomo, que seja cadastrado sozinho e tenha sua própria camada de persistência.

Isto é, se AddressVO for utilizado apenas por este contato, se for apenas parte do ContactVO e não for manipulado em saparado do ContactVO, este deve ser persistido junto, em cadeia pelo Hibernate, afinal, a validação do objeto assim como toda sua manipulação deverá estar implementada nos métodos de manipulação do ContactVO. No entanto, se AddressVO é um objeto independente, que pode ser compartilhado entre outros ContactVO, cadastrado e manipulado independente do ContactVO, e para isso ter sua própria camada de persistência, ele nunca deve ser persistido junto com o ContactVO nem com outro objeto que faça referêcia. Para persisti-lo deve ser chamado o CRUD equivalente para fazer as validações e preparações necessárias antes de persisti-lo.