Ejercicios de persistencia con ORM

Esta es una colección de ejercicios para reforzar lo visto en el curso Persistencia con ORM. Trabajan sobre el caso práctico de gestión de FCT (Caso práctico: gestión de FCT).

Requisitos previos

Necesitas haber trabajado los conceptos de ORM y disponer de un entorno con una herramienta de mapeo objeto-relacional configurada.

  1. ¿Qué es el desfase objeto-relacional y cómo lo resuelve un ORM?

  2. Dado el dominio FCT, ¿cómo mapearías la relación «una empresa tiene varios tutores»? ¿Qué cardinalidad tiene?

  3. Explica los estados por los que pasa un objeto persistente (transitorio, gestionado, separado, eliminado).

  4. ¿Qué diferencia hay entre sincronizar (flush) y confirmar (commit)?

  5. ¿Qué estrategias existen para mapear una jerarquía de clases? ¿Qué efectos tiene cada una?

Soluciones
// 2. Relación uno a muchos: empresa -> tutores
// En la entidad Empresa:
//   @OneToMany(mappedBy = "empresa")
//   private List<Tutor> tutores;
//
// En la entidad Tutor:
//   @ManyToOne
//   private Empresa empresa;

// 3. Estados:
//   - Transitorio: new Empresa() sin persistir
//   - Gestionado: asociado a la sesión
//   - Separado: la sesión se cerró
//   - Eliminado: marcado para borrar
  1. ¿Qué es una cascada y cuándo la usarías al guardar una empresa con sus tutores?

  2. ¿Cuándo usarías SQL explícito en lugar del lenguaje de consulta del ORM?

  3. ¿Por qué el componente ORM debe abrir y cerrar la sesión internamente, sin exponerla al cliente?