Y llegó Hibernate para quedarse

Hace casi tres meses que comenzamos el desarrollo y ya con toda la lógica de negocio implementada, planificamos poner en marcha Hibernate en el proyecto con Spring. El código estaba prácticamente escrito pero no se había probado, y es que, hasta el momento hemos desarrollado con una implementación fake de la capa de persistencia.

Utilizar una implementación fake en memoria ha sido un acierto total, nos hemos centrado en las características y la funcionalidad de la aplicación y hemos desarrollado colecciones de objetos que hemos llamado Escenarios para instanciarlos cada vez que arrancamos el servidor y con cada test.

Sin embargo, no ha sido tan acierto el no mantener los tests. Para cada historia de usuario, procurábamos escribir un test que luego no hemos ejecutado antes de actualizar en el repositorio. Por ello, mis tareas para integrar Hibernate han sido:

1. Crear la base de datos con el plugin Hibernate Tools para Eclipse.

2. Definir los contextos de pruebas y de ejecución.

3. Arreglar los tests con la implementación fake de la persistencia, y una vez que estaba seguro de que estos tests funcionaban:

4. Arreglar los tests para que pasasen con la implementación Hibernate.

Tras crear la base de datos, lo primero que hice fue eliminar las restricciones SQL. Prefiero tener el control total sobre la información y manejarla desde mi lógica de negocio a someterme a los caprichos de la capa de persistencia. Lo segundo y más feo, utilizar la anotación @NotFound de Hibernate para que ignore cuando no encuentra la instancia de la que depende el objeto que se carga.

En el cuarto paso me he encontrado con algunos errores comunes al usar en primer lugar una implementación en memoria:

– Excepciones “Transient object”. Por ejemplo: Un objeto Position referenciado por una instancia User que, al guardar esta, Hibernate se queja por no haber guardado la otra antes. En la implementación en memoria esto no era un problema.

– Comparación de objetos con ==. Sí, lo he visto, lo hemos escrito. En mi defensa diré que fue sólo una vez y que las variables tenían pinta de int.

Como conclusión, sólo una: Ya que se escriben tests, hay que mantenerlos aunque la adrenalina recorra nuestro cuerpo y necesitemos escribir y escribir funcionalidad.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s