Spring Hibernate: HibernateTemplate Class

Hablando del HibernateTemplate, la implementación de Hibernate según Spring, surge siempre la misma pregunta entre la gente que no lo utiliza asiduamente: ¿De que me pierdo si no lo uso?


Si consultamos la documentación de Spring Hibernate encontramos que dice que HibernateTemplate es una clase que provee muchas de las funcionalidades de la interfaz Session de Hibernate, adicionando algunos métodos que facilitan considerablemente su utilización. Con HibernateTemplate siempre podremos obtener los métodos que trae la Session exactamente igual que como lo usábamos antes.

Entonces ¿Que ventajas me trae usar HibernateTemplate?

  1. HibernateTemplate se asegura de que las instancias de la Session sean correctamente abiertas y cerradas.
  2. Maneja las transacciones automáticamente.
  3. Las instancias del HibernateTemplate son thread-safe (y toda la gestión de concurrencia que implica esto) y son reusable.
  4. Para las operaciones básicas del CRUD (Create-Replace-Update-Delete) el HibernateTemplate ofrece métodos muy simples que ocupan una sola línea de código y resuelven el problema.
  5. Spring provee una clase acoplable al HibernateTemplate: HibernateDaoSupport, de la cual debe extender una clase DAO para poder hacer uso inmediatamente de métodos get y set del SessionFactory y un método getHibernateTemplate() para usar todas las funcionalidades de HibernateTemplate. Esto nos permite implementar un DAO simple y rápidamente con un muy reducido tiempo y costo de aprendizaje.
  6. Maneja el commit (o auto-commit) de una transacción.
  7. Gestiona las excepciones convirtiendo las HibernateException en DataAccessException siguiendo la jerarquía de excepciones.
  8. Importante también mencionar que el lazy loading trabajará directamente con la Session cuando este abierta, y para muchos de los casos se cierra mandando una LazyInitializationException que se puede manejar con un interceptor de nombre OpenSessionInView.
Si vemos como manejan la Session en el HibernateTemplate nos daremos cuenta que muchas de las veces que usabamos a Hibernate tal vez no lo haciamos tan bien como creíamos...

En conclusión, si tu aplicación tiene implementado Spring Hibernate, no dejes de usar esta fabulosa clase HibernateTemplate porque siempre va a estar al día con las buenas prácticas y el impecable, performante y correcto uso de Hibernate.

1 comentario:

David dijo...

Hola, me gusta mucho tu blog. Quería hacerte una pregunta. En NetBeans, a un proyecto le puedo añadir varias bibliotecas, como son "Hibernate" e "Hibernate JPA". ¿ Cual es la diferencia entre estas dos ?