RFWDAOConverterInterface
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:
![]() |
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:
![]() |
Conversão de Dados entre BigDecimal e String |
public class MyVO {
@RFWDAOConverter(converterClass = MyConverter.class)
private BigDecimal myData = null;
}
|