Ejercicios sesión 4: Mapeado entidad-relación, relaciones
En esta sesión de ejercicios vamos a añadir relaciones a las entidades creadas en la sesión anterior.
Relación uno-a-muchos entre Autor y Recurso
1. Define una relación uno-a-muchos entre Autor y Recurso. Modifica las entidades para implementar la relación. Crea una función nueva (por ejemplo, add-autor-pagina() (sin parámetros) que busque un autor y una página ya creados y que los relacione. Despliega la aplicación en el servidor web, y comprueba las tablas de la base de datos. ¿Qué nuevas columnas se han añadido? ¿Se ha creado alguna tabla adicional?
2. Añade en la clase RecursoEAO el método setAutorRecurso que actualice la relación.
3. Modifica la página index.html y añade parámetros a la función nueva, para que podamos añadir una página a un autor, introduciendo el nombre de la página y el nombre del autor. Comprueba que funciona correctamente.
Relación muchos-a-muchos entre Tag y Recurso
1. Define una relación muchos-a-muchos entre Tag y Recurso. Modifica las entidades, añadiendo la anotación @ManyToMany(mappedBy="tags") junto al atributo recursos de la entidad Tag y la anotación @ManyToMany junto al atributo tags de la entidad Recurso. Crea una función nueva (por ejemplo, add-tag-recurso() sin parámetros) que busque una tag cualquiera y una página ya creadas y que los relacione. Despliega la aplicación en el servidor web, y comprueba las tablas de la base de datos. ¿Qué nuevas tablas se han creado? ¿Qué columnas tiene y qué representan?
2. Cambia ahora el sentido del mappedBy, definiéndolo en la entidad Recurso. Borra con el administrador de base de datos la tabla creada en el punto anterior y vuelve a ejecutar la aplicación. ¿Has tenido que cambiar el código? ¿Qué tabla se crea ahora?. Elimina por último la anotación mappedBy de ambas tablas y vuelve a comprobar qué tabla se crea.
EAOs
Modifica los EAOs para incluir los métodos de actualización de las relaciones anteriores.
Haz que la función del EAO que asocie una etiqueta con una página aumente también el número de ocurrencias de la etiqueta.
Interfaz web para tags
Modifica las páginas HTML, los servlets y las páginas JSP para poder añadir tags a un recurso y, dado un recurso, listar sus tags asociados.