Paso 5: CRUD Book - Author - Explicación del diseño
Representaciones de los recursos
El siguiente diagrama muestra los DTOs (representaciones básicas) y los DetailDTOs (representaciones detalladas) del ejemplo completo.
Para este paso, hemos agregado la relación entre libros y autores. La relación es bidireccional y de cardinalidad uno a muchos en ambos lados: un libro puede tener muchos autores y un autor puede tener muchos libros.
Note que en ambos casos, estas colecciones son atributos de las representaciones detalladas:
1) La clase BookDetailDTO
tiene el atributo authors
que es una colección de AuthorDTO
(representación básica de autor).
1) La clase AuthorDetailDTO
tiene el atributo books
que es una colección de BookDTO
(representación básica de libro).
El diagrama de DTOS del ejemplo completo se muestra en la siguiente figura:
Las entidades y las anotaciones JPA
En el caso de la relación entre libro y autor, esta es una relación ManyToMany en ambos sentidos. Significa que en BookEntity
, el atributo que define la colección de autores debe ir anotado con @ManyToMany
y en AuthorEntity
, el atributo que define la colección de libros también va anotado con @ManyToMany
. En este caso, JPA creará una tercera tabla para manejar la relación entre un libro y un autor.
El siguiente diagrama muestra las clases Entity
del ejemplo completo. En comentarios sobre los extremos se indica el tipo de anotación que se requiere.