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:
ProfesorCorreoElectronicoEstas 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: