BISDAO Legacy
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.
![]() |
|
![]() |
|
Tratamento do Relacionamentos das Entidades
Este tópico relaciona o comportamento do BISDAO com às entidades relacionadas à entidade principal. Mas lembre-se que não cabe ao BISDAO realizar validações, o objeto que chega aqui deve estar pronto para ser persistido, para validar consulte o BISValidator.
O BISDAO se orienta pelas annotations do JPA e do BISMeta Annotations, logo seu correto funcionamento depende da informação correta informada nessas annotations. Veja a sessão de exemplos nesta página.
Inserção
Ao inserir uma nova entidade no banco de dados o BISDAO simplesmente fará a inserção em cascata de todos as entidades de composição, e a associação dos IDs das entidades associadas.
Atualização
A atualização é uma operação um tanto mais delicada pois já temos informações persistidas no banco de dados e temos de garantir que nenhum "lixo" ficará no banco ao persistir um objeto. Inclusive desfazer relacionamentos que antes existiam e agora não existem mais, e em caso de relacionamentos de composição que deixaram de existir deve excluir os objetos filhos (deletar os objetos órfãos). Assim:
- O BIS atualizará os atributos da entidade como de costume;
- Atributos com relacionamento de composição:
- Caso o objeto no banco ainda não tenha um relacionamento, deixamos o JPA criar a nova entidade;
- Caso o objeto no banco já tenha um relacionamento, e:
- O novo objeto tem um relacionamento, verificamos:
- Se ambos têm o mesmo ID, deixamos seguir para que o JPA atualize o mesmo objeto;
- Se não tem ID, excluímos o objeto do relacionamento atual do banco e deixamos que o JPA insira o novo;
- Se o ID for diferente, CriticalException, já que IDs não são aceitos para inserir um novo objeto!
- O novo objeto tem um relacionamento, verificamos:
- Atributos com relacionamento de associação:
- CriticalException caso o objeto não tenha um ID definido.
Todos os relacionamentos do tipo composição serão analisados e persistidos recursivamente conforme as regras acima.
![]() |
|
Mapeamentos JPA
Esta sessão traz exemplos de como definir os mapeamentos entre as entidades para o correto funcionamento do JPA e do BISDAO.
Composição
Associação
![]() |
|
ManyToOne

![]() |
CompanyVO
@BISMetaRelationshipField(caption = "Município", required = false, relationship = RelationshipTypes.ASSOCIATION)
@ManyToOne(cascade = CascadeType.REFRESH, fetch = FetchType.LAZY, optional = true)
@JoinColumn(name = "idcore_locationcity")
private LocationCityVO locationcityvo = null;
|