Al
contrario que JDO o EJB, Hibernate no esta basado en
la “mejora” de
bytecodes o en la generación de código, sino que utiliza
reflexión. Deja una huella pequeña y, a parte de la
base de datos, necesita muy pocos recursos para ejecutarse. Creo que
el éxito de Hibernate se debe a tres razones principales: es
específico, sencillo y rápido. Veamos a continuación
algunos de los principios que han hecho exitoso al
proyecto Hibernate.
-
Haga
sólo una cosa y hágala bien. Hibernate
es un motor de persistencia que funciona exclusivamente
con aplicaciones Java que usan bases de datos
relacionales mediante JDBC. Esto constituye la
mayor proporción de los casos de persistencia
en Java. Además, es un problema específico.
Así, limitando el dominio del problema
a bases de datos relacionales, Hibernate puede
tomar algunas decisiones pragmáticas que
tienen un impacto dramático sobre la eficiencia.
Por ejemplo, como los diseñadores sabían
que usarían SQL a través de JDBC,
pudieron aprovechar algoritmos específicos
para estos casos y extensiones de alto rendimiento
para “outer joins”. Esto no es posible
en muchos otros frameworks de persistencia, ya
que no se limitan a bases de datos relacionales.
Así, Hibernate consigue una mayor eficiencia
al precio de un mayor acoplamiento a un problema
específico.
-
Procure
alcanzar la sencillez. El equipo de
Hibernate ha trabajado duro para conseguir documentación
efectiva y buenos ejemplos de uso. Además,
ha diseñado una API sencilla. Así,
conseguí que mi primera aplicación
con Hibernate se ejecutara en menos de quince
minutos. Observo la sencillez de Hibernate en
muchos puntos. Sus métodos tienen nombres
adecuados y las capas de abstracción están
claras. Puedo trabajar simplemente con Javabeans,
en vez de tener que construir componentes complejos.
Hibernate incluye integración con Ant
y soporte a Xdoclet. En general, un framework
debería proporcionar a sus usuarios el
soporte más sencillo posible.
-
Elija
sus batallas. Si usted decide construir
aplicaciones o frameworks más sencillos,
deberá decidir donde centrar su atención.
No puede adoptar cada patrón de diseño
existente o hacer todas las mejoras de eficiencia
posibles. Admito que algunas de mis primeras
reservas sobre Hibernate se debían a su
uso de la reflexión. Sin embargo, Gavin
King y su equipo supusieron de forma correcta
que la sobrecarga debida a la reflexión
sería mínima comparada con la debida
a las consultas SQL que Hibernate generaría.
En vez de optimizar la reflexión, el equipo
se concentró en el número y eficiencia
de las consultas retrasando actualizaciones,
combinando muchas sentencias SQL en una, detectando “no
operaciones” (como una inserción
seguida inmediatamente de una actualización
y un borrado) y haciendo optimizaciones similares.
El resultado es un framework sorprendentemente
rápido, que además goza de la transparencia
que permite la reflexión.
Debido
a la sencillez y a su concentración en los puntos importantes,
el equipo de Hibernate ha conseguido lanzar versiones
bien acabadas a un ritmo rápido. Su comunidad de usuarios crece
a pesar de que se ha completado sólo la segunda versión
principal. Pero la persistencia no es el único dominio en el
que la tendencia a la sencillez est á echando raíces.
|