NHibernate

“NHibernate is a .NET based object persistence library for relational databases. NHibernate is a port of the excellent Java Hibernate relational persistence tool.”

NHibernate es una poderosa e útil librería para .NET de persistencia de objetos para Bases de Datos Relacionales (DB2, Oracle, SQL Server, PostgresSQL, MySQL entre otros).Mi experiencia con NHibernate fue en un proyecto para la Catedra “Desarrollo de Aplicaciones Cliente Servidor” de 4to año de la Carrera de Ing. en Sistemas de la Universidad Tecnológica Nacional, Facultad Regional Resistencia. El Sistema consistía en una aplicacion Cliente/Servidor que contaba con un cliente .NET, y un servidor PostgresSQL 7.4 bajo un SuSE Linux 9.1.

Para realizar el trabajo y partiendo de 0% de conocimientos en Persistencia de Objetos nos valimos de herramientas que no ayudaron a trabajar con el NHibernate.

Para la generación de Entidades utilizamos el ObjectMapper que es una Herramienta de Generación de Código que permite extraer el Esquema de la Base de Datos y luego generar las Entidades en C# y los hbm.xml para el NHibernate. Por desgracia no está la posibidad de extraer el esquema de la Postgres automaticamente y se debe realizar a mano, obviamente, el ObjectMapper te permite hacerlo, pero hay mayor probabilidad de errores -nos ha pasado-.

Otra tool muy útil ,para checkear las Entidades y los Resultados de las consultas en HQL, es el NQL -NHibernate Query Analizer – Con ella podremos saber si nuestras entidades y las relaciones definidas en los hbm.xml estan bien.

El NHibernate se conecta a la Postgres con un .NET Data Provider, Npsql .

Se pueden encontrar muchas información en NHibernate Documentation

14 comments so far

  1. Phpjose on

    ¿Sabes de alguna dirección en donde bajar un ejemplo con PostgreSQL?

    ¿Y como activar el log del NHibernate?

  2. Dario Quintana on

    Hola. La idea de NHibernate es abstraerte del motor subyacente, entonces cualquier ejemplo que consiguas de NH sirve para cualquier base de datos (todo tiene sus excepciones). Lo único que tendrías que ver es la forma de conectarte a NH. Acá tenes como conectarte a PostgreSQL.
    Acá tenés fijate cómo activar el log en NHibernate

  3. Phpjose on

    Muchas gracis por responder.

    Ya tengo ejemplos pero el problema es que no consigo conectar con la base de datos en postgres. Me da una execpción en la instrucción:

    return ( IDbConnection ) Activator.CreateInstance( connectionType );

    de la clase ReflectionBasedDriver del NHibernate.

    Un conpañero lo consiguió con el driver para ODBC. Por cierto, ¿qué me recomiendas? ¿usar ODBC o Npgsql directamente?

    PD.: Ya conseguí instalar el log.

  4. Dario Quintana on

    Mmm…siempre va a ser algo más rápido el Npgsql que el ODBC, aparte es más piola,es un assembly más.

    Subí la solución a algún lado, así veo y te digo, o pasámela a uooopaa arroba gmail.com.

    Te recomiendo este grupo de NHibernate en español.

    Saludos!

  5. Juan Pablo Rubio on

    Hola Dario mira soy nuevo con Nhibernate, realmente quiero hacer mi tesis utilizando este motor de persistencia pero no he podido sacar el más sencillo de los ejemplos, tengo un computador con windows vista ultimate, visual studio 2005 y sql express 2005, tu crees que es posible o me toca cambiar la configuración, te agradezco cualquier respuesta que me puedas dar

  6. Dario Quintana on

    Obvio que es posible hombre, sino el proyecto no existiría🙂
    Ahora bien, no sé realmente cual es tu problema, y si tenés un problema, seguro debe ser de configuración.

    Por que no escribís tu problema al grupo con el error que estás teniendo:
    http://groups.google.com.ar/group/NHibernate-Hispano
    Veo que estás, pero no para recibir correos, posteá el problema.

  7. Luis on

    Hola Dario, muy interesante tus ejemplos y comentarios sobre NHibernate, yo estoy iniciando y teno una duda. ¿como manejo las tablas que tienen claves compuestas? ej. el tipico caso de una factura con sus detalles.

  8. eli on

    Hola!!! soy nueva en nhibernate y debo de realizar un proyecto de compras online, estilo amazon… con una base de datos en oracle 10i… quisiera saber como realizar la conexion, y esta conexion iria en el web.config… o debo de crear otro xml??? ya me baje el nhibernate pero no tengo idea de omo comenzar…. please necesito ayuda!!!

  9. eli on

    Hola…. estaba haciendo el ejercicio de hibernate, y llegue a la parte de las pruebas unitarias…. cuando empece a instalar lo de las pruebas unitarias, y pase hacer lo de la base de datos…luego se empezo a instalar el sql server 2008 express… y entoncs mi pc se reinicio y aparece la famosa pantalla azul con el siguiente mensaje stop: 0x000000F4 (0x00000003….) … no se q hacer… necesito de nuevo ayuda!!!.. perdi todo lo q hice… q hago???

  10. Dario Quintana on

    No sé como responderte.. Quizas tu instalación de Sql2008 quedó inconsistente..la verdad que no sé. Empezá de nuevo.

  11. eli on

    Hola!!! finalmente pude salirme de esa pantalla azul, y continue con el comienzo de nhibernate… creo q no voy a dormir hasta q el ejemplo me corra… el asunto es q cuanto hago en run test me aparece el siguiente error:

    Compile complete — 0 errors, 0 warnings
    BaseDeDato.Tests -> C:\Documents and Settings\Owner\My Documents\Visual Studio 2008\Projects\CompraOnline\BaseDeDato.Tests\bin\Debug\BaseDeDato.Tests.dll
    copy C:\Documents and Settings\Owner\My Documents\Visual Studio 2008\Projects\CompraOnline\BaseDeDato.Tests\..\..\SharedLibs\sqlce*.dll C:\Documents and Settings\Owner\My Documents\Visual Studio 2008\Projects\CompraOnline\BaseDeDato.Tests\bin\Debug\
    The system cannot find the file specified.
    C:\WINDOWS\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets(3397,13): error MSB3073: The command “copy C:\Documents and Settings\Owner\My Documents\Visual Studio 2008\Projects\CompraOnline\BaseDeDato.Tests\..\..\SharedLibs\sqlce*.dll C:\Documents and Settings\Owner\My Documents\Visual Studio 2008\Projects\CompraOnline\BaseDeDato.Tests\bin\Debug\” exited with code 1.
    Done building project “BaseDeDato.Tests.csproj” — FAILED.
    ========== Build: 0 succeeded or up-to-date, 1 failed, 0 skipped ==========

    podrias ayudarme???

  12. Dario Quintana on

    Estás teniendo errores de compilación, vas a tener que tratar de resolverlo por ti misma. Consejo, lee los errores que te explican cual es la situación.

  13. ccmmasi on

    ola.,.,.,
    quisiera preguntarte como paso un tipo int a una clase pais???
    me refiero a q


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

A %d blogueros les gusta esto: