BISVO

De BIS Wiki
Revisão de 17h57min de 19 de maio de 2019 por Rodrigogml (discussão | contribs) (Criou página com 'Todo a estrutura do BIS é baseada na manipulação dos objetos do tipo BISVO. Entender a base da estrutura do VO e seu funcionamento é o primeiro passo para desenvolver bem...')
(dif) ← Edição anterior | Revisão atual (dif) | Versão posterior → (dif)
Ir para navegação Ir para pesquisar

Todo a estrutura do BIS é baseada na manipulação dos objetos do tipo BISVO. Entender a base da estrutura do VO e seu funcionamento é o primeiro passo para desenvolver bem no BIS.

Introdução aos Objetos de Dados dos Patterns Java

Para entender o VO do BIS, vamos entender primeiro a definição dos objetos como definidos nas documentações dos patterns de desenvolvimento do Java:

  • Java Beans - O java Bean é uma classe simples utilizada apenas para carregar um conjunto de dados. Esta deve seguir as seguintes regras:
    • Conter um construtor publico padrão - isto é, um construtor que não receba nenhum parâmetro.
      O objetivo dessa regra é permitir que os frameworks possam instanciar o objeto facilmente, sem necessariamente conhece o objeto e saber que dados passar no construtor.
    • Seus atributos devem ser acessíveis através de métodos GET e SET. E preferencialmente ter seus atributos privados para evitar um acesso direto.
    • Sua classe deve ser serializável, isto é, implementar ou extender alguma classe que implemente a interface 'Serializable' do java.
      Isso permite que o objeto seja convertido em vários outros tipos de estrutura (como XML por exemplo) e salvos ou transmitidos para outros plataformas, frameworks, computadores, etc. e ser retornado em um objeto de forma fácil.
  • Value Object - O Value Object (VO) era um termo inicialmente utilizado para indicar um objeto capaz de guardar uma pequena quantidade de informação. Como o objeto/classe Integer ou String do Java. Além disso, um VO deveria ser imutável. Toda vez que seu dado precisasse ser alterado, o objeto deveria ser descartado e um novo construído, exatamente como as classes do Java citadas.
  • Data Transport Object - O Data Transfer Object (DTO) é o objeto capaz de carregar as informações através da rede, ou mesmo entre as camadas (sendo que as camadas podem estar em diferentes máquinas). Ou seja, o DTO é o objeto que carrega os VOs entre as camadas ou sistema distintos. Os DTO também são conhecidos só por TO (Transfer Objects).


A mudança e o BIS

Com o tempo a utilização do termo VO passou a indicar objetos maiores capaz de guardar uma coleção de informações/atributos de um determinado objeto, bem como a serem transmitidos entre as camadas e rede. Ou seja, popularmente chama-se de VO os objetos acima chamados de DTO.

No BIS chamamos o objeto de VO e juntamos todas as funcionalidade em um objeto único! Assim, o VO do BIS é:

  • o objeto capaz de representar uma pessoa, uma venda, uma nota, um produto e assim por diante (como um VO ou Java Bean);
  • é utilizado e transferido desde a camada de persistência até a camada de apresentação (como o DTO);
  • tem as mesmas obrigações que o Java Bean (de construtor e acesso dos atributos por GET e SET, devendo estes métodos seguir a convenção de nomes definidos pela Sun);
  • devem obrigatoriamente estender a classe BISVO.

As vantagens de ter um único objeto, primeiro é não ter que implementar várias classes (um Bean, Um VO, um TO, etc) que representam a mesma coisa. Ganhamos no tempo de desenvolvimento, manutenção do objeto e de não ter que criar "conversores" que passam os dados de um objeto para outro. As desvantagens é que passamos a ter limitações na criação dos objetos, como por exemplo, sendo o mesmo objeto usado em toda a aplicação, o objeto não pode simplesmente ganhar atributos por ser conveniente para a cada de apresentação ou para a camada de persistência. Em resumo, um BISVO deve conter apenas os atributos que realmente descrevem o objeto e nunca atributos convenientes ou temporários para exibição ou de processamento. (Nestes casos recomenda-se a criação de outro BEAN que encapsule o VO).