Archive for the ‘NHibernate’ Category

using NHibernate.Tool.hbm2ddl

Una herramienta muy importante de NHibernate, a la vez, deseable por los ORM, es la generación de código.

Para generar el DDL de la base de datos, nos podemos valer de la información del esquema, que nos brindan los archivos de mapeo ó mapping files: hbm.xml.

Un vez que tenemos bien configurados estos archivos, podemos generar las tablas con solamente incluir un par de sentencias en .Net y configurar un archivo xml. Tambien se tiene que tener referenciado a NHibernate.

Código en C#:

using System;
using NHibernate.Cfg;
using  NHibernate.Tool.hbm2ddl;
public class MyClass
{
    public static void Main()
    {
            Configuration config = new Configuration();
            config.Configure();
            SchemaExport exporter = new SchemaExport(config);
            //exporter.SetOutputFile(@"c:testDDL.sql");
            exporter.Drop(true, true);
            exporter.Create(true, true);
    }
}

Archivo hibernate.cfg.xml (debe ir copiado en el directorio de salida):

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration  xmlns="urn:nhibernate-configuration-2.0" >
 <session-factory name="NHibernate">	
	<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
	<property name="connection.driver_class">NHibernate.Driver.FirebirdClientDriver</property>
	<property name="connection.connection_string">
	ServerType=1;
	User=sysdba;password=masterkey;Database=C:ruraldata.fdb;
	Pooling=false
	</property>
	<property name="show_sql">true</property>
	<property name="dialect">NHibernate.Dialect.FirebirdDialect</property>
	<property name="use_outer_join">true</property>
	<property name="query.substitutions">true 1, false 0, yes 'Y', no 'N'</property>

	<mapping assembly="RuralSolution.Entities" />

 </session-factory>
</hibernate-configuration>

En este caso es la exportación del schema de una base de datos Firebird embebida.

Esta herramienta me ha sido de mucha utilidad. Estoy desarrollando una aplicación en SQL Server 2005 y NHibernate, pero, me dí cuenta que la aplicación debía ser portable, de modo que tuve que migrar la base de datos a una portable, y como Firebird está pasando todos los test de NH, la elegí. Ya tenía los hbm, así que no requirió trabajo demás.

Importante para la generación con Firebird: en el directorio de salida entonces tendriamos que tener: fbembed.dll, FirebirdSql.Data.FirebirdClient.dll, y hibernate.cfg.xml.

Si quieren saber como trabajar con MyGeneration y Firebird embedded léanse este post de mi amigo Matias.

Gmane y NHibernate-Hispano

Si sos un desarrollador de Software, profesional o más bien novaton (en este caso más aún) es casi imposible que no estes participando de al menos alguna lista de Correos, y si te interesan muchos temas lo más probable es que estés suscripto a varias.Hace tiempo que participo en listas de correos, más activas en algunas que otras, y en algunas solamente en modo “listen and learning” (mmm…no sé por qué me acorde de bridges). Por lo tanto, tener una herramienta que gestione los correos y que te facilite la lectura, es importante.

Bloggeando encontré hace ya hace un tiempo un mailing list archives, que basicamente es un archivador grandote que centraliza información de cientos (y me quedo corto…miles) de listas de correo en un lugar común.

Dos muy usados son Gmane y The Mail Archive.

NHibernate-Hispano, que como una bolita de nieve está creciendo de a poquito, me deja muy contento ya que el grupo se está poniendo bueno y muchos están conformes con las cositas que se están posteando. Porque de pronto no entontrabas un bendito ejemplo de NHibernate en la web, y ahora con el Grupo por lo menos entrás y recorrés la bandeja de entrada, encontrás ejemplos o soluciones que quizás te pueden servir, e inclusive, hay para todos lo gustos y colores.

Decidí, para probar, inscribir a nuestro fabuloso grupo en estos archivadores de listas de mail y estas son las direcciones:

La que más me gusta es Gmane, tiene inclusive un gráfico que te muestra la actividad del grupo en los pasados días.
Gmane, para registrar los tracks del grupo, se infiltra en el mismo como si fuera un miembro más. De modo que todos los mails que se manden al grupo, se manden tambien a Gmane para que él los archive.También Gmane te permite revisar tus mails en una vista tipo blog, es decir, te permite ver tu lista como si fuera un super-extenso blog que hasta si querés, podés cambiar el estilo modificando el CSS.

Y como todo: “Es cuestión de gustos”. Porque sino, podés usar Gmail y listo! (que es lo que uso). Lo que no me puedo imaginar es: alguien participando en más de 5 listas de correos muy activas y usando la bandeja de entrada de Yahoo ó Hotmail; la verdad que creo que no debe ser muy cómodo. En fin, creo que Gmail se presta muy bien para esto, y las felicitaciones son para él, pero los aplausos…para Ajax, la verdad este conjunto de tecnologías metidas en una sola, se lleva todos los premios, y como viene la mano…es lo que se viene.

Grupo de Usuarios de NHibernate en Español

Google Groups Es un Grupo de Usuarios de NHibernate en Español que está formandose, queremos sumar más gente e ir creciendo en experiencia con respecto a este Framework de Persistencia tan conocido, y con tan poca info en español.
Bueno, nos vemos ahí !!!

Correo electrónico:

NHibernate y .NET 2.0

En estos dias migré el Trabajo de Cliente Servidor que lo tenía realizado en un Visual Studio 2003 Professional, al tan esperado Visual Studio 2005 (Developer).
El Wizard para importar proyectos de versiones anteriores se portó bastante bien (bueno en algunos casos hizo cualquier cosa pero bueno), por lo menos sirvió para presentar de nuevo el trabajo con algunas mejoras, en realidad el cambio surgió que tenía que hacer unos reportes a partir de un Dataset, con el Crystal Report, pero al parecer estaba pinchado, y no funcionaba bien, aparte de unos STOPs Windows XP al querer compilar muchos proyectos de una Solución, que incluso no me dejaban compilar el Enterprise Library 2005.
Bueno entonces lo pasé a un 2003 Server y donde tenía el VS 2005 y funcionó.
Salvo con algunas problemas con las vistas de Diseño.

Pero lo mas asombroso fue que funcionó el mapper de Objetos, o sea el NHibernate 1.0 !!!… una maravilla y no tuve que hacer nada respecto a eso. Segun estuve leyendo hay ciertas cosas que no son compatibles…habria que esperar una nueva version que sea totalmente compatible con ADO.NET 2.0. Este es un link a un blog que habla un poco sobre el soporte de null con el NHibernateContrib

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

Tutoriales de NHibernate

Este es un muy buen tutorial donde se puede apreciar la potencia de NHibernate en el manejo de los objetos. El ejemplo esta basado sobre en un esquema relacional complejo, incluye el uso de discriminator en atributos, entre otras cosas.

Tutorial Server Site – 1era Parte

La segunda parte del Tutorial habla sobre el manejo de Sesiones.

Tutorial Server Site – 2da. Parte

Este es un link a un tutorial de NHibernate bastante bueno hosteado en CodeProject. Al ejemplo es sencillo y le vendrían bien unas claves complejas para ejemplificar como se manejan -que muchas veces son un dolor de cabeza-.

Ejemplo de CodeProject