Spring
 

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.