# paso 1
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
# paso2
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
```
# pASO 3
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.
# Paso 4 ejemplo de uso de anotaciones
```
@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;
```
# paso 5 como acceseder a la categoria atraves de su relacion
```
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();
```