23.09.05

Y se abrió el cielo y cayó NHibernate

Publicado en General a las 1:11 por benji

eSigo a vueltas con el proyecto fin de carrera. Como todo aquel que haya hecho una aplicación medianamente grande sabrá, el programar la capa de datos es un tanto coñazo. En mi caso yo estoy usando el patron de diseño DAO que me permite desacoplar lo que quiero hacer (guardar datos, actualizarlos, etcétera), de la manera en la que lo hago.

El caso es que usando dicho patrón hay que programar un DAO por cada uno de los objetos relevantes del dominio (y que van a ser persistentes en base de datos). Eso puede ser muy repetitivo y bastante coñazo, sobre todo si lo haces a pelo como lo estaba haciendo yo: Crea DataProvider, crea una búsqueda, extrae las columnas de la búsqueda, construye el objeto, devuelve el objeto o al reves si estamos creando, etc…

Y entonces di con NHibernate, el estupendo y flamante (LGPL) port del Hibernate de Java. ¿Como, que no saben lo que es Hibernate/NHibernate?. Pues un sistema chulo chulo de persistencia de objetos en base de datos.

Dicho rápido: El frotar se va a acabar.

Bueno, tampoco vamos a exagerar ;). La cosa se trata de que con NHibernate defines “tal atributo de tal objeto, se guarda en tal columna de tal tabla de la base de datos” y poco más. Configuras el chisme para que funcione con tu base de datos (Postgres en mi caso). Y a partir de ahí guardar un objeto es cosas de:

session.Save(objeto)

Vale, esta es la visión simple. Cuando nos metemos con objetos con coleciones de otros objetos (muy habitual, piensen factura->línea de factura, que seguro que no les suena ni nada ;)), la cosa se torna un poco más oscura, ahí comentan que las relaciones en los objetos son bidireccionales y bueno, hay que tocar un poquillo los objetos valor.

El caso es que una vez entendiendo el entorno (a mi aun me faltan las excepciones e intentar poder indicarle que coja el archivo de configuracion de un sitio concreot), se abarata el desarrollo un rato largo :).

Si trabajan con .NET (Mono en mi caso), pruebenlo, cójanlo con cariño y no se arrepentirán (demasiado :P).

P.D.: Mi anteproyecto ya ha salido aprobado (de Julio y lo han puesto ahora… no comment), por tanto parece que ya estoy en condiciones de, cuando haya hecho mi trabajo, acabar la jodida carrera ;).

5 Comentarios »

  1. cuasimon

    24 de Septiembre de 2005 a las 18:38

    Puuff.

    En la Facultad, en la cafeteria, en el jabber, y ahora también aquí.

    Voy a terminar sabiendo lo que es el hibernate :-P

  2. Benji_

    25 de Septiembre de 2005 a las 17:45

    A ver si es cierto, que mas clases particulares ya no puedo (y es NHibernate ;))

  3. Jaimecg

    27 de Septiembre de 2005 a las 2:28

    Sobre NHibernate estaba escribiendo algo sobre como usarlo en Mono. (que sigo escribiendo en ratos libres) Ahí les dejo el link

    http://beta.monohispano.org/index.php/Libro_para_desarrolladores_en_Mono:Cap%C3%ADtulo_7#NHibernate

  4. Benji_

    27 de Septiembre de 2005 a las 10:13

    Hombre, ahí fué donde lo encontré yo, pero queda un poco escasito, sobre todo cuando necesitas hacer relaciones uno a muchos con colecciones.

    Lo mismo también me animo yo y pongo algo, que las relacciones bidireccionales explicadas en castellano tienen que ser de gran ayuda.

  5. Marcelo

    11 de Octubre de 2005 a las 16:14

    Me gustaría recibir un ejemplo "simple" del uso de éste ORM. Les comento que bajé uno de agenda y la verdad no pude hacerlo funcionar. Desde yá muchas gracias por su tiempo.

Publicar un comentario