La relación uno a muchos consiste simplemente en que un objeto padre tenga una lista Ordenar de otros objetos hijo de forma que al persistirse el objeto principal también se persista la lista de objetos hijo. Esta relación también suele llamarse maestro-detalle o padre-hijo.
Antes de entrar en cómo se implementa en Hibernate , veamos las clases Java y las tablas que definen la relación uno a muchos.
Para nuestro ejemplo vamos a usar las clases:
Profesor
CorreoElectronico
Estas dos clases van a tener una relación uno a muchos.
public class Profesor implements Serializable { private int id; private String nombre; private String ape1; private String ape2; private List<CorreoElectronico> correosElectronicos; public Profesor(){ } public Profesor(int id, String nombre, String ape1, String ape2) { this.id = id; this.nombre = nombre; this.ape1 = ape1; this.ape2 = ape2; } } public class CorreoElectronico implements Serializable { private int idCorreo; private String direccionCorreo; private Profesor profesor; public CorreoElectronico() { } public CorreoElectronico(int idCorreo,String direccionCorreo,Profesor profesor) { this.idCorreo=idCorreo; this.direccionCorreo=direccionCorreo; this.profesor=profesor; } }
En el listado 1 podemos ver cómo la clase Profesor
tiene una propiedad llamada correosElectronicos
de la clase CorreoElectronico
(línea 6) y además la clase CorreoElectronico
también posee referencia a Profesor
ya que hemos definido que la relación es bidireccional desde Profesor
hacia Direccion
y viceversa.
El mecanismo que usamos en Java para almacenar una serie de objetos hijo es el interfaz List. Se utiliza este interfaz ya que nos va a permitir que los objetos hijo se encuentren ordenados.
Profesor
y CorreoElectronico
no se han incluido los métodos get/set de cada propiedad para facilitar la lectura pero deben estar en la clase Java.
En el siguiente diagrama UML se ve la relación desde Profesor
hacia CorreoElectronico
y viceversa.
La tablas de base de datos quedarían de la siguiente forma: