Uana categoria contiene varios libros: Relaccion de 1 a n en la que categoria contiene un conjunto de lñibros
}un libro pertenece a una categoria: Relaccion de n a 1 en la que cada libro pertenece a una categoria en concreta
Para que esta relación exista anivel de código Java, la clase Categoría debe incluir un List<> deLibros y la clase Libro debe incluir una variable de tipo Categoría
@Entity
@Table(name = "Categorias")
public class Categoria {
@Id
private int id;
private String descripcion;
private List<Libro> listaDeLibros;
public List<Libro> getListaDeLibros() {
return listaDeLibros;
}
public void setListaDeLibros(List<Libro> listaDeLibros) {
this.listaDeLibros = listaDeLibros;
}
// resto de codigo
@Entity
@Table(name="Libros")
public class Libro {
@Id
private String isbn;
private String titulo;
private Categoria categoria;
public Categoria getCategoria() {
return categoria;
}
public void setCategoria(Categoria categoria) {
this.categoria = categoria;
}
//resto de codigo
este solo es relacion a nivel de codigo y no genera a nivel de persistenca si no unicamente a nivel de memoria tendremos que apoyarnos de anotaciones que provee hibernate
@OneToMany: Anotacion que se encarga de crear una relacionde 1 a n entre dos clases predeterminadas (Categoria y Libro en nuestro ejemplo). --]
@ManyToOne:Anotacion que se encarga de crear una relacion de muchos a uno entre dos clases predeterminadas (Libro y Categoria en nuestro ejemplo). --]
@JoinColumn:Anotacion que sirve a para discernir que columna de la tabla de la base de datos se usa como clave externa o foranea a la hora de aplicar la relacion.
@Entity
@Table(name="Libros")
public class Libro {
@Id
private String isbn;
private String titulo;
@ManyToOne
@JoinColumn (name="categoria")
private Categoria categoria;
}
@Entity
@Table(name="Categorias")
public class Categoria {
@Id
private int id;
private String descripcion;
@OneToMany
@JoinColumn(name = "categoria")
private List<Libro> listaDeLibros;
SessionFactory factoriaSession=HibernateHelper.getSessionFactory();
Session session = factoriaSession.openSession();
List<Libro> listaDeLibros = session.createQuery("from Libro libro”).list();
for(Libro l :listaDeLibros) {
System.out.println(l.getTitulo());
//accedemos a la categoria a traves de la relacion.
System.out.println(l.getCategoria().getDescripcion());
}
session.close();