Evaluando NHibernate

Para implementar mi tesis utilizé ASP.NET, y como quería hacer las cosas interesantes, decidí además probar NHibernate (bueno, cuando comencé no habían muchos ORMs de donde elegir en .Net).

Y desde el comienzo tuve la intención de comprobar si relamente eran ciertas las cosas que decía en su documentación, especialmente lo relacionado a la independencia del DBMS. Desarrollé usando MySQL como DBMS, y para no ser el típico developer que prueba MySQL y Sql Server, decidí buscar otro DBMS, como estaba usando cierto mecanismo para la generación de llaves primarias, entonces busque un DBMS que también posea ese mecanismo, pero que además que sea un DBMS de los grandecitos (tipo Oracle), entonces llegué a decidirme por IBM DB2.

Entonces lo primero fue implementar un “Hola Mundo” usando C#, el gran problema fue encontrar un Provider .Net para IBM DB2, intenté con la versión trial de un provider implementado por una tercera empresa, el cuál lastimosamente traia Providers para muchos DBMSs menos para DB2 en su edición trial. Buscar el IBM DB2 .Net Provider fue complicado, porque venía incorporado en otros productos, hasta que bajé el cliente para DB2 de la página de IBM que traia el dichoso Provider. Auqnue luego de instalar eso y los add-ins para Visual Studio 2005, el IDE no arrancaba (ja ja), al final desinstalé los add-ins y listo, por lo menos tenía el provider.

Buscar la cadena de conexión adecuada también fue medio problemático hasta que me di cuenta que en el ejemplo de NHibernate se conectan mediante ODBC. Para crear mi BD usé una herramienta CASE que tenía la opción de generar el script para DB2, aunque no para la versión que yo quería, así que el siguiente escollo a saltar fue eso, arreglar el script.

Una vez creada la BD y llenados algunos datos de prueba, a correr la aplicación, funciona correctamente en algunas cosas pero en otras no, bueno a correr los unit tests para ver cual fue el impacto.

60% de los tests correctos, es decir 40% con fallas, a buscar los motivos. Tiempo después veo que varios de los motivos son bichos de la versión de NHibernate que estoy usando, ni modo a actualizame, solo que debo hacer algunos cambios en los mapeos de NHibernate debido a que la nueva versión trae cambios (por suerte todo ta bien explicado en las notas de release).

Una vez terminada la actualización voilá, funciona!, y la verdad no hice ningunos cambios a los mapeos en si a causa del dialecto de DB2, sino que hice cambios por la actualización a la nueva versión de NHibernate (y encontrñe algunos bicho, de seguro que la flojera de MySQL ocultaron).

Conclusión, en el caso de cambiar de MySQL a DB2 usando NHibernate, los cambios a los archivos de mapeos son casi nulos a lo mejor un 5% (a ojo de buen cubero) por algunas configuraciones en las relaciones que MySQL acepta pero DB2 no, se podría decir que realmente cumple con lo que dice.

2 comentarios el “Evaluando NHibernate

  1. Hola Alvaro que tal te saludo desde Perú, quiero aprender a como conectarme a un DB2 (en un MainFrame de AS/400) usando NHibernate y no me resulta, me sale que el proveedor .NET de este componente no se soporta, por si acaso tendras algun codigo de ejemplo que puedas enviarme? Necesito una ayuda urgente (Tambien estuve usando el CastleProject, que utiliza el Patron ActiveRecord y se basa en NHibernate pero tampoco me funciona)
    Te agradeceré infinitamente tu ayuda.
    Muchas Gracias

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s