23 de agosto de 2010

Hibernate - Parte 11: Interceptores y Eventos

Algunas veces podemos tener situaciones que demanden la realización de algunas operaciones antes o después de nuestra lógica funcional (precondiciones y postcondiciones). O tal vez simplemente queremos intervenir antes o después de qué alguna de nuestras operaciones de persistencia (alta, baja, actualización, lectura, etc.) sea realizada. Ya sea para, por ejemplo, modificar algún valor de nuestra entidad (como encriptar algún dato antes de ser guardado) o para leer algún valor.

También algunas veces es necesario recibir alguna notificación de algún suceso que esté ocurriendo en nuestro motor de persistencia, como el estar recuperando o eliminando algún objeto. Esto puede ser útil para propósitos de auditorías, o para obtener estadísticas sobre las operaciones de persistencia en nuestras aplicaciones.

Hibernate proporciona dos mecanismos para lograr estos dos objetivos: listeners y eventos.

En este tutorial aprenderemos cómo recibir notificaciones cada vez que Hibernate realice alguna operación de persistencia a través de estos dos mecanismos.


3 de agosto de 2010

Hibernate - Parte 10: Herencia

La herencia es uno de los mecanismos que nos proporciona la orientación a objetos más poderosos, ya que gracias a ella surgen cosas como la sobreescritura, la reutilización y extensibilidad de código, etc.

Ya que le herencia facilita la creación de clases a partir de otras clases ya existentes en algunas ocasiones nuestras clases entidad necesitarán extender de otras clases, entidades o no. Como por ejemplo, podemos tener una clase "Usuario" de las cuales extiendan las clases "Administrador", "Operador" y "SuperUsuario".

Mapear una jerarquía de clases a tablas relacionales puede ser un problema un poco complejo. Afortunadamente Hibernate nos proporciona 3 formas o estrategias de manejar la herencia con nuestras clases entidad. En este tutorial veremos cómo usar estas tres formas de herencia y las implicaciones que tienen el uso de una u otra. Veremos cómo hacer esto tanto con anotaciones como con archivos de mapeo.