viernes, 2 de noviembre de 2007

Hibernate,... su puta matter !!!

Hola holita ...

Puede que todavía sea pronto para echar por tierra lo que tanto usan, que con solo unos meses de uso del Hibernate es pronto para rajar de él,... pero este es mi blog y me lo follo cuando quiera ...

Pues bien,... la vida con hibernate es lo que el comunismo a la política,... una utopía ...

La idea es buen bonita,... tenemos todas nuestras tablas mapeadas en una colección de objetos, y al cambiar un objeto pues se lanza una SQL al servidor y se cambia la tabla correspondiente. Qué bonito es el amor,... cuando se hace.

Pues bien,... la primera en la frente,... cuando me enteré que el hibernate toca diréctamente el codebyte de java para hacer esto,... cosa que no me parece nada seguro. Digamos para que nos entendamos que es como tocar directamente un .exe para crearle funcionalidades. Un poco fuerza bruta, no?

Lo más bonito es cuano tube que hacer un simple SELECT MAX(XXX)+1 FROM TABLA. Pues bien,... pensé que habrá alguna función muy bonita que me hiciera esto,... pues no. La solución de mi jefe de proyecto fue hacer un xml tal como <>select max(xxx)+1 from tabla< /select > (a groso modo ...), pero entonces la pregunta retórica es,... pa que me sirve en este caso hibernate ??? Me comentaron que había forma de hacerlo con alguna función de hibernate (imagino que con un DetachedCriteria), pero que era mejor así por una extraña razón (que no me he preocupado en averiguar :P).

Seguimos ,... tenia mi tabla maestra con tabla detalla tipo factura con sus lineas. El problema me lo encontré cuando tenía que hacer una modificación de factura con sus lineas. Pues bien,... pensé,... esto cojo y me creo mi objeto Factura con todas sus lineas bien enlazadas y al entregárselo a Hibernate este se encargará de saber si existe o no y modificar si hace falta. Pues no,... tengo que cargar la factura y entonces hacer una sincronización de líneas de factura, cosa que no me hizo mucha gracia. Esto es porque cada objeto de Hibernate está enlazado mágicamente con su tabla correspondiente.

Bueno,... esto sin hablar de la piña de SQL's que se lanzan a diestro y siniestro, y no quiero ni pensar cómo hacer para optimizar tantas SQL's lanzadas.

En definitiva,... paso más tiempo arreglando cosas de hibernate que programando.

Espero que algún día pueda escribir una entrada pidiendo perdon a Hibernate, que descubra la gran ventaja que tiene y que a mi, como programador, me ayude a ser más productivo.

Un saludito.

No hay comentarios: