Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

@TypeConverters do Room

Eu fiquei na dúvida sobre como o TypeConverters sabe que método exatamente ele deve usar, pois podemos marcar vários métodos diferentes com a anotação TypeConverter.

Eu imagino que seja no momento do mapeamento, que identifica que o objeto Prova tem um atributo complexo (Calendar) que o banco de dados não consegue trabalhar, e busca dentre os seus TypeConverters um método que receba por parâmetro um atributo igual ao que ele precisa converter, no caso o Calendar, e que retorne um tipo que ele consiga trabalhar, e no retorno de uma lista de provas um método inverso.

Mas não tenho certeza como isso funciona, porque dei uma olhada na documentação dessas duas anotações, e não encontrei uma resposta para essa dúvida.

Alguém que saiba como a anotação TypeConverters realiza esse trabalho e que possa tirar essa dúvida?

2 respostas

Olá, sem dúvida tu descreveu corretamente o que acontece de fato.

Tu na verdade deseja saber como é a implementação dessa dinâmica, é isso?

Se eu não estiver enganado o instrutor falou que o Room é uma implemtação do JPA, é uma espécie de Hibernate para o ambiente Android.

No meu caso é a primeira vez que tomei contato com esse padrão de persistência. E é o meu primeiro nesse tipo de padrão na verdade.

É sensacional! Parece mágica.

No meu caso a chave para entender a implementação desses padrões é aprofundar no estudo de OO e padrões de projeto.É muito tempo por vir. Por enquanto já tá legal ir aprendendo a usar o Room abstraindo sua implementação.

É aquela história, não precisa saber primeiro a construir um carro para poder dirigir um.

Mas sua pergunta é válida, pois se você já tiver no estágio adequado alguém mais experiente pode te direcionar corretamente e você chega na solução por si ou é capaz de entender uma solução já existente.

É importante sempre perguntar,ainda quando se estiver curioso sobre coisas que estão sendo abstraídas, pois a curiosidade pode travar o aprendizado. O cara pode realizar um esforço para entender algo que precise de outras informações que ele ainda não tem. Assim pode vir frustração. E o cara esquece que o objetivo inicial era aprender a andar na bicicleta e não contruir uma e no fim fica sem nada.

Não sei qual é o seu nível de conhecimento em orientação a objetos e padrões de projetos. Vamos aguardar alguém experiente indicar qual a direção para entender a implementação.

solução!

Fala ai Gilmar, tudo bem ?

Cara acho que o que pegou foi o s no final né ? rs

Então, quando usamos @TypeConverter está falando que o método é responsável por converter um tipo mais complexo por algo que o banco entenda e o caminho contrário.

Já o @TypeConverters é usando quando queremos falar quais serão os conversores de nossa aplicação, ai podemos passar várias classes que tem métodos anotados com TypeConverter