====== Inicio ====== Esta unidad llamada "Relaciones" explica como realizar las distintas relaciones entre entidades de Hibernate. Esta unidad contiene mucho mas material del que se necesita en el curso. Para el curso del CEFIRE únicamente es necesario estudiar los temas: * [[unidades:03_relaciones:04_uno_a_muchos_ordenada]] * [[unidades:03_relaciones:06_cascade]] * [[unidades:03_relaciones:07_equals]] El motivo de solo estudiar estos temas es por un lado que esta unidad quedó el año pasado muy **pesada** al ver todos los tipos de relaciones. Pero el motivo principal es un problema con Hibernate en la relaciones muchos a muchos que hacen que al borrar una fila se borren mas filas de las necesarias. Así que por un lado no es recomendable usar la relación [[unidades:03_relaciones:05_muchos_a_muchos_desordenada]]. También para qué explicar la relación [[unidades:03_relaciones:03_uno_a_muchos_desordenada]] si realmente en mas conveniente usar [[unidades:03_relaciones:04_uno_a_muchos_ordenada]] ya que no se pierde nada. Por otro lado las relaciones "uno a no" tampoco son tan habituales. Por todo ello mejor aligerar esta unidad y tener más tiempo para las 2 últimas unidades que son más interesantes y mas complejas. Aun así se ha dejado el material extra por si al alguien le interesa profundizar en el tema. ===== Temas ===== * [[unidades:03_relaciones:01_uno_a_uno_direccional]] * [[unidades:03_relaciones:02_uno_a_uno_bidireccional]] * [[unidades:03_relaciones:03_uno_a_muchos_desordenada]] * [[unidades:03_relaciones:04_uno_a_muchos_ordenada]] * [[unidades:03_relaciones:05_muchos_a_muchos_desordenada]] * [[unidades:03_relaciones:06_cascade]] * [[unidades:03_relaciones:07_equals]] ===== Ejemplos ===== Todos los ejemplos de esta unidad se encuentran en github en [[https://github.com/logongas/cursohibernate/tree/master/ejemplos/unidad_03]]. \\ En caso de no disponer de git en el ordenador cliente se puede descargar en un fichero zip todos los ejemplos del curso desde {{https://github.com/logongas/cursohibernate/archive/master.zip}} * **Ejemplo 01** \\ Relación 1 a 1 desde ''Profesor'' hacía ''Direccion'' (unidireccional) usando ficheros "''.hbm.xml''". * **Ejemplo 02** \\ Relación 1 a 1 desde ''Profesor'' hacía ''Direccion'' (unidireccional) usando anotaciones de JPA. * **Ejemplo 03** \\ Relación 1 a 1 entre ''Profesor'' y ''Direccion'' (bidireccional) usando ficheros "''.hbm.xml''". * **Ejemplo 04** \\ Relación 1 a 1 entre ''Profesor'' y ''Direccion'' (bidireccional) usando anotaciones de JPA. * **Ejemplo 05** \\ Relación uno a muchos entre ''Profesor'' y ''CorreoElectronico'' , pero sin ordenar, usando ficheros "''.hbm.xml''". * **Ejemplo 06** \\ Relación uno a muchos entre ''Profesor'' y ''CorreoElectronico'' , pero sin ordenar, usando anotaciones de JPA. * **Ejemplo 07** \\ Relación uno a muchos entre ''Profesor'' y ''CorreoElectronico'' , ordenada , usando ficheros "''.hbm.xml''". * **Ejemplo 08** \\ Relación uno a muchos entre ''Profesor'' y ''CorreoElectronico'' , ordenada , usando anotaciones de JPA. * **Ejemplo 09** \\ Relación muchos a muchos entre ''Profesor'' y ''Modulo'' , usando ficheros "''.hbm.xml''". * **Ejemplo 10** \\ Relación muchos a muchos entre ''Profesor'' y ''Modulo'' , usando anotaciones de JPA. * **Ejemplo 11** \\ Ejemplo de uso de los métodos ''equals'' y ''hashCode''. Realizamos la comparación y añadir a un Set el mismo objetos obtenido en distintas sesiones. Con la clase ''Profesor'' los resultados son erróneos pero con la clase ''Usuario'' son correctos, ya que hemos sobreescrito los métodos ''equals'' y ''hashCode''. ===== Ejercicios ===== Los ejercicios de esta unidad se encuentran en [[ejercicios:unidad03]]