es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Insertar en la relación uno-a-muchos de la sala.

Cuando intento utilizar clases intermediarias para modelar las relaciones de entidad en Room, me encontré con un problema. Si bien la documentación describe cómo llegar a una relación de uno a muchos, no describe cómo hacer una inserción.

Supongo que esto no se puede hacer automáticamente, por lo tanto, necesitamos una consulta para insertar el padre, recuperar el ID del padre y asignarlo como clave foránea del hijo, y luego insertar el hijo.

El problema es que no estoy seguro de dónde colocar esa consulta. Si la incluyo en mi DAO, tendré que incluir métodos innecesarios para insertar al hijo. Si la incluyo en mi Repositorio, esto dificulta mucho las pruebas (si no es imposible).

¿Alguien sabe cómo resolver esto?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Clases intermedias de la habitación e inserción de relaciones de entidad

    Cuando se trata de relaciones de entidad en Room, se pueden utilizar clases intermedias para modelar las relaciones uno a muchos. Sin embargo, aunque la documentación describe cómo recuperar datos de estas relaciones, no se detalla cómo insertar nuevos datos.

    Suponiendo que la inserción no se puede hacer automáticamente, se necesita escribir una consulta para insertar al padre, obtener su ID, asignarlo a la clave foránea del hijo y luego insertar al hijo. El problema radica en decidir dónde colocar esta consulta.

    Si se incluye la consulta en el DAO, resultaría en métodos redundantes para insertar al hijo. Por otro lado, incluir la consulta en el Repositorio complicará las pruebas.

    En situaciones en las que Room no permite adaptarse a sus diseños, la mejor opción sería utilizar LiveData y vistas para gestionar las actualizaciones en la capa de interfaz de usuario. De lo contrario, es posible que tenga que comprometer la limpieza de su arquitectura o la exhaustividad de sus pruebas.

Comments are closed.