RFWDAOConverterInterface

De Wiki do Leitão
Revisão de 12h06min de 28 de julho de 2023 por Rodrigogml (discussão | contribs) (Criou página com 'O '''RFWDAOConverterInterface''' permite a criação de uma classe utilizada para "ensinar" o RFW ORM como tratar a serialização e desserialização de alguma informação. Embora o RFW ORM saiba como tratar a maior parte dos dados nativos, algumas informações do VO podem ter caráter personalizado ou mesmo serem representados por uma interface de dados próprios. Em resumo esta interface tem só dois métodos: * '''toVO()''' - Que deve transformar a informação r...')
(dif) ← Edição anterior | Revisão atual (dif) | Versão posterior → (dif)
Ir para: navegação, pesquisa

O RFWDAOConverterInterface permite a criação de uma classe utilizada para "ensinar" o RFW ORM como tratar a serialização e desserialização de alguma informação. Embora o RFW ORM saiba como tratar a maior parte dos dados nativos, algumas informações do VO podem ter caráter personalizado ou mesmo serem representados por uma interface de dados próprios.


Em resumo esta interface tem só dois métodos:

  • toVO() - Que deve transformar a informação recebida do banco de dados para o VO, e;
  • toDB() - Que faz o processo inverso, transformando o objeto do VO no objeto que será passado para o banco de dados.


Implementação

Vejamos um exemplo de implementação: Imagine que por qualquer motivo uma informação que no objeto é um BigDecimal, mas no banco de dados salvaremos como String. Assim precisamos realizar a conversão como abaixo:

Java 256.png Conversão de Dados entre BigDecimal e String
  public class MyConverter implements RFWDAOConverterInterface {

    @Override
    public Object toDB(Object value) {
      // Para o banco de dados tratamos o nulo, e simplesmente chamamos o .toString() so BigDecimal que será recebido.
      if (value == null) return null;
      return value.toString();
    }
  
    @Override
    public Object toVO(Object value) {
      // Para o VO, tratamos o nulo e criamos um novo BigDecimal a partir do seu próprio .toString() salvo no banco. 
      if (value == null) return null;
      return new BigDecimal(value.toString());
    }
  }


Este é um exemplo bem esquisito, mas serve para ilustrar. Porém, tenha em mente que o RFWDAOConverterInterface serviria não apenas para converter entre tipos, mas também para tratar a maneira como é salva no banco de dados. Por exemplo, seria possível criptografar a informação ao salvar no banco, e descriptografar ao ler ela para o objeto.


Utilização

Para utilizar a classe que criamos acima, precisamos apenas referencia-la no atributo do nosso VO utilizando a annotation @RFWDAOConverter no atributo que precisa da conversão:


Java 256.png Conversão de Dados entre BigDecimal e String
  public class MyVO {

    @RFWDAOConverter(converterClass = MyConverter.class)
    private BigDecimal myData = null;
  
  }