Hibernate - Hibernate con annotations relaciones uno a Muchos – Relacion @OneToMany

Buenos días!, hoy vamos a continuar con Hibernate y con annotations, hoy vamos hablar puntualmente el tipo de relación One to Many, es decir de uno a muchos.

Hibernate - Hibernate con annotations relaciones uno a Muchos – Relacion @OneToMany




Hibernate - Relación @OneToMany

El tipo de relación uno a muchos es unidireccional es decir una persona tiene muchas películas, un alumno tiene muchos cursos (por el momento) etc. Podemos darnos cuenta cuando es unidireccional cuando un objeto del lado X se relaciona con varios objetos del lado Y.

Hibernate - Hibernate con annotations relaciones uno a Muchos – Relacion @OneToMany


Nuestro diagrama de entidad y relación sera algo así:

Hibernate - Hibernate con annotations relaciones uno a Muchos – Relacion @OneToMany

Utilizaremos el ejemplo de Alumno, Curso. Pero como vemos en el diagrama de entidad relación podemos hacer si bien que Y contenga un campo de  X a modo de identificar pertenencia o una tabla intermedia que guarde toda la información. En mi caso generare una tabla intermedia

Diagrama de entidad relación

Hibernate - Hibernate con annotations relaciones uno a Muchos – Relacion @OneToMany


Código Hibernate:


Clase Alumno
import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.OneToMany;
import javax.persistence.Table;

@Entity
@Table (name = "Alumnos")
public class Alumno implements Serializable {


private static final long serialVersionUID = -321494369631390297L;
private int idAlumno;
private String nombre;
private Set<Curso> cursos = new HashSet<Curso>();

//Getters and Setters
@Column (name="nombre")
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
@Id
@Column (name="idAlumno")
public int getIdAlumno() {
return idAlumno;
}
public void setIdAlumno(int idAlumno) {
this.idAlumno = idAlumno;
}
@OneToMany(cascade = CascadeType.ALL)
@JoinTable(name = "alumnos_cursos", joinColumns = { @JoinColumn(name = "idAlumno") }, inverseJoinColumns = { @JoinColumn(name = "idCurso") })
public Set<Curso> getCursos() {
return cursos;
}
public void setCursos(Set<Curso> cursos) {
this.cursos = cursos;
}
}



Clase Curso
import java.io.Serializable;

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "curso")
public class Curso implements Serializable {

private static final long serialVersionUID = 1L;
@Id
private int idCurso;
private String nombreCurso;

public int getIdCurso() {
return idCurso;
}

public void setIdCurso(int idCurso) {
this.idCurso = idCurso;
}

public String getNombreCurso() {
return nombreCurso;
}

public void setNombreCurso(String nombreCurso) {
this.nombreCurso = nombreCurso;
}

public Curso() {
};

public Curso(int idCurso, String nombreCurso) {
super();
this.idCurso = idCurso;
this.nombreCurso = nombreCurso;
}

}



Habiendo puesto el código ahora explicaremos un poco mas como funciona el @OneToMany, al decirle que el uno a mucho decimos este objeto tiene una lista del otro.
Existen diferentes tipos de "guardados en cascadas" en nuestro caso ahora solo mostraremos este y mas adelante los detallaremos.

(cascade = CascadeType.ALL)

Con el annotation que se encuentra debajo del @OneToMany el @JoinTable este juntara en la tabla "Alumnos_Cursos" el id del alumno que justamente coincide con idAlumno y lo guardara en la tabla Alumnos_Cursos en el campo que detallamos "idAlumno y luego le diremos toma de la otra entidad el id mediante el "inverseJoinColumns" tomara el id de curso y lo guardara en la tabla Alumnos_cursos campo idCurso.

Saludos

Hibernate - Hibernate con annotations relaciones uno a Muchos – Relacion @OneToMany Hibernate - Hibernate con annotations relaciones uno a Muchos – Relacion @OneToMany Reviewed by El lado oscuro de java on mayo 07, 2015 Rating: 5

No hay comentarios:

Con la tecnología de Blogger.