BISDAO Legacy: mudanças entre as edições

De BIS Wiki
Ir para navegação Ir para pesquisar
Sem resumo de edição
Sem resumo de edição
Linha 1: Linha 1:
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".
O BISKernel 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:
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.
* '''[[BISVO]]''' - Um herdeiro de BISVO que represente a entidade principal a ser persistida. 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.
* '''[[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.
* '''[[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.
* '''[[BISVO_]]''' - O MetaObject deve ser utilizado para indicar os ''atributos'' que queremos que o método de find busque automaticamente para popular cada objeto. Normalmente os métodos de ''find'' já trazem o atributos do VO populado, mas não os atributos das entidades relacionadas (relacionamento marcados como '''Lazy''' no JPA). 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.




Linha 11: Linha 11:




{{nota|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.
{{nota|Extensão da BISDAO|Normalmente não é necessário estender 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.}}
Ainda assim, é possível estender 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.}}




{{nota|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.}}
== Tratamento do Relacionamentos das Entidades ==
 
 
{{stop|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.}}

Edição das 22h23min de 29 de junho de 2017

O BISKernel 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 principal a ser persistida. 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 atributos que queremos que o método de find busque automaticamente para popular cada objeto. Normalmente os métodos de find já trazem o atributos do VO populado, mas não os atributos das entidades relacionadas (relacionamento marcados como Lazy no JPA). 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 estender 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 estender 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.


Tratamento do Relacionamentos das Entidades