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.
Nuestro diagrama de entidad y relación sera algo así:
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
Código Hibernate:
Clase Alumno
Clase Curso
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 - 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.Nuestro diagrama de entidad y relación sera algo así:
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
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
Reviewed by El lado oscuro de java
on
mayo 07, 2015
Rating:
No hay comentarios: