BISDAO
A persistência do BIS é automatizada como um sistema de ORM automático, mas melhor definido para as necessidades de Patterns do BIS. Gerando menos problemas de persistência, mais autonomia no desenvolvimento e praticidade na maior parte das tarefas que envolvem o banco de dados.
O principal objetivo do BISDAO é receber objetos e persisti-lo (inserindo/atualizando), exclui-lo ou encontrar os objetos no banco de dados automaticamente. Abstraindo a questão objeto x relacional do banco de dados, e diminuindo (ou eliminando na maioria dos casos) a necessidade de implementação códigos SQL pelo desenvolvedor.
Estrutura do Banco de Dados
O BIS é uma plataforma que suporta múltiplas empresas sendo manipuladas pela mesmas instância. Assim um mesmo servidor e mesmo banco de dados será utilizado para gerenciar várias empresas. Para isso o sistema utilizará vários "schemas" (ou catálogos) do banco de dados, sendo:
- bis_kernel - schema onde ficam as tabelas de uso geral do sistema. Como o cadastro das empresas presentes, dos usuários de sistema, e outras tabelas de dados comuns a todas as empresas, como tabelas de CEP, e outros dados que não pertencem a uma única empresa.
- bis_<empresa> - com este nome deve existir um schema para cada empresa que o sistema gerencia. Isto é, para cada empresa que o BIS atender, um novo schema é criado para armazenar os dados específicos da empresa, como itens/produtos sendo vendidos, documentos fiscais, etc.
Funcionamento Básico
Embora utilize os conceitos do banco de dados (por óbvio já que utiliza um banco dados), não segue os padrões definidos no JPA. Assim, nenhuma annotation do JPA é utilizada nas entidades do BIS.
O BISDAO manipula os objetos/entidades padrão do BIS automaticamente, isto é, para ser persistido é necessário que a entidade seja descendente do BISVO.
Annotation @BISDAO
Toda entidade deve ter a Class Annotation @BISDAO para configurar a tabela a qual o objeto se refere.
![]() |
Exemplo @BISDAO
@BISDAO(schemaType = Schema.KERNEL, table = "k_company")
public class BISCompanyVO extends BISVO {
...
}
|
A annotation tem dois parâmetros:
- schemaType - Indica se a tabela pertence ao Schema do Kernel do BIS ou ao Schema da empresa.
- table - Indica o nome da tabela onde o conteúdo deste objeto é guardado.
Relacionamento Atributo do Objeto x Coluna do BD
Para que um atributo do objeto seja relacionado corretamente com uma coluna da tabela (especificada na Annotation @BISDAO) é necessário que o atributo tenha uma @BISMeta Annotations. Nela constarão várias informações sobre o atributo, incluindo a coluna. Caso o nome da coluna não seja especificado, o BISDAO assume que o nome da coluna é exatamente o mesmo nome do atributo, ou seja, caso o mesmo nome seja utilizado na coluna do banco quando no atributo do objeto, não é necessário especificar o atributo coluna na Annotation. Isso deixa o código menos poluído.
Relacionamento Entre Objetos
Os relacionamentos entre objetos precisam ser declarados de acordo com o "tipo do relacionamento" constituído entre eles para que o BISDAO saiba como proceder quando for atualizar, inserir ou excluir os objetos.
Associação
O tipo de relacionamento Associação é utilizando quando ambos os objetos existem separadamente, mesmo que não tenham vínculos. Por exemplo:
- Aluno x Curso - Tanto Aluno quando Curso existem estando o aluno matriculado no curso ou não. Um curso pode existir sem ter nenhum aluno matriculado, bem como um Aluno pode existir sem estar matriculado em nenhum curto.
Para o BISDAO, esse tipo de relacionamento exige que a contra-parte já exista no banco de dados, ou seja já tenha um ID. A contra parte nunca é manipulada junto com este objeto, ou seja:
- Exclusão - O objeto da contra-parte não é excluído junto, apenas a associação é desfeita.
- Inclusão - Em caso de inclusão, o BISDAO espera que os objetos associados já tenham um ID. Pois eles não serão incluídos junto, apenas será criada uma associação.
- Alteração - Em caso de alteração o objeto será comparado com o atual no banco de dados. Objetos que não estejam mais presentes no objeto sendo persistido, terão sua associação removida, novos objetos terão associação criada. A contra-parte nunca será excluída, e nem criada.