O método utilizado para pegar a instancia do DAO não parece o mais adequado, alguém poderia me dizer se existe outra forma para essa implementação para pegar a instância do DAO ?
Vou tentar explicar um pouco mais Temos três classes abaixo uma é a AgendaDataBase que é uma classe abstrata, e possui um método abstrato até ai, Ok, porém esse método abstrato de alguma forma muito loca que eu não entendi retorna a instancia da classe RoomAlunoDao, Alguém pode me explicar como isso ocorre?
@Dao public interface RoomAlunoDAO { @Insert void salva(Aluno aluno);
@Query("SELECT * FROM aluno")
List<Aluno> todos();
@Delete
void remove(Aluno aluno);
}
@Database(entities = {Aluno.class}, version = 1, exportSchema = false) public abstract class AgendaDatabase extends RoomDatabase { public abstract RoomAlunoDAO getRoomAlunoDAO(); }
public class AgendaApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
criaAlunosDeTeste();
}
private void criaAlunosDeTeste() {
AgendaDatabase database = Room
.databaseBuilder(this, AgendaDatabase.class, "agenda.db")
.build();
RoomAlunoDAO dao = database.getRoomAlunoDAO();
dao.salva(new Aluno("Alex", "1122223333", "alex@alura.com.br"));
dao.salva(new Aluno("Fran", "1122223333", "fran@gmail.com"));
}
}