Ejercicios de Acceso a datos en Spring
Continuaremos en esta sesión con la aplicación AmigosSpring, simplificando el código de los DAOS gracias a Spring y añadiendo transaccionalidad declarativa.
Uso de JDBC en Spring
Refactoriza el código de MensajeDAO (ya que es el más sencillo de los dos DAOs) para que use una SimpleJdbcTemplate. Ten en cuenta que:
- Puedes reutilizar parte del método crearMensaje para el RowMapper, ya que hace prácticamente lo mismo (construir un objeto rellenándolo con los datos de un registro).
- Gran parte de la gestión de excepciones desaparece en los DAOs. A cambio, los objetos de negocio recibirán DataAccessException en lugar de DAOException, por lo que también tendrás que cambiar parte de su código
Transaccionalidad declarativa
El envío de mensajes tiene un problema: primero se envía el mensaje y luego se cobra. Compruébalo entrando como "jsf" con password "jsf" y enviando un mensaje a "pepe", por ejemplo. No se le pueden cobrar los dos créditos por el envío pero el mensaje se queda en la tabla. Añadir transaccionalidad declarativa a GestorMensajes.enviar() para que se anule el envío (inserción en la tabla de "recibidos") si el cobro genera un SinPermisoException. Ten en cuenta que puedes necesitar DataSourceUtils para poder liberar la conexión sin cerrarla. Finalmente, comprueba que ahora la pobre jsf ya no puede mandar mensajes gratis.