NHibernate – Visual Studio 2008, MySQL Server 2005 y C#

Este es un tutorial que te permitirá usar el Motor de persistencia Nhibernate.

Primero:

Qué es un motor de persistencia?

Los motores de persistencia, que en el mundo de la programación no es más que un componente de software (una capa de programación), también conocido como “capa de datos”, “capa de persistencia” o “correspondencia O/R (“OR mapping”)”, son los que permiten establecer una capa intermedia entre el sistema orientado a objetos y la base de datos relacionales donde se almacenarán toda la información del mismo.

Esta solución brinda las mejores ventajas de ambos modelos:

  • Por una parte, se puede programar con orientación a objetos, aprovechando las ventajas de flexibilidad, mantenimiento y reusabilidad.
  • Por otra parte, el poder usar una base de datos relacional, aprovechándose de su madurez, la estandarización y las herramientas relacionales que hay para ella.

En la actualidad existen distintos tipos de motores de persistencia. Entre los de código abierto se pueden destacar: Hibernate, Castor, Torque, OJB y Cayenne. Entre los comerciales, se pueden nombrar: TopLink, Cocobase y FastObjects. En los últimos años se ha creado una especificación llamada JDO, para estandarizar la forma de programar en Java con esos motores de persistencia. Ejemplos de motores de persistencia que cumplen el estándar JDO son Kodo, JDO Genie, LiDo, Exadel JDO, IntelliBO, JRelay JDO (todos ellos comerciales), Speedo JDO, TJDO y XORM (de código abierto).

En el presente tutorial se mostrará el ejemplo “NHibernate.Tutorial” usando el motor de persistencia NHibernate, que es una parte del famoso framework Open Source Hibernate desarrollado en Java y una de las primeras aproximaciones para el mundo .NET de proyectos ORM, una base de datos: “TUTORIAL” implementada en SQL Server 2005 y Visual Studio 2008 para su desarrollo en el lenguaje .NET.

Para el desarrollo del siguiente ejemplo se necesitará tener previamente instalado:

  • Visual Studio 2008

  • SQL Server 2005


Ahora se deberá seguir los siguientes pasos:

  1. Abrimos Visual Studio 2008 y creamos un nuevo proyecto C# ASP .NET que tendrá como nombre de la solución: NHibernate.Tutorial y el sitio web se llamará: NHibernate.Tutorial.Web

NHibernateTutorial

2. A dicha solución se le agregará una Biblioteca de Clases (Class Library) de Visual C# que se llamará: NHibernate.Tutorial.DAL.

Hasta aquí se deberá contar con una estructura como la siguiente:

exploradorDeSoluciones

3. Añadimos una base de datos SQL Server 2005 al sitio Web (NHibernate.Tutorial.Web) dentro de la carpeta     App_Data y la llamamos Tutorial.mdf.

3.1  Ahora añadimos una tabla a la base de datos que llamaremos Persona con la siguiente definición de campos:

DB

4. Ahora en la biblioteca de clases, NHibernate.Tutorial.DAL, se agregarán las referencias a las librerías NHibernate.dll, Hibernate.ByteCode.Castle.dll (de la versión para .NET 3.5, que se puede encontrar en el NHibernate-2.1.0.Beta2-bin.zip que se descargó previamente), log4net y Iesi.Collections.

5.   En la misma biblioteca de clases, se creará una nueva clase llamada persona que será la clase que se mapeará con la tabla que se ha creado.

public class persona{

private string _nombre,_apellido;

private int _id=8;

private DateTime _fechaNacimiento;

public int Id{

get { return _id; }

set { _id = value; }

}

public string Nombre{

get { return _nombre; }

set { _nombre = value; }

}

public string Apellido{

get { return _apellido; }

set { _apellido = value; }

}

public DateTime FechaNacimiento{

get { return _fechaNacimiento; }

set { _fechaNacimiento = value; }

}

6.   Ahorase necesita enseñarle a NHibernate cómo relacionar la tabla que se ha creado con la clase. Para hacer esto, se crea una carpeta llamada MappingFiles (la biblioteca de clases, NHibernate.Tutorial.DAL) y dentro de dicha carpeta se crea un fichero de mapeo XML con lo que añadiremos a la biblioteca de clases un nuevo fichero XML que llamaremos persona.hbm.xml y le agregamos la configuración que se muestra a continuación:

<?xml version=”1.0″ encoding=”utf-8″ ?>

<hibernate-mapping xmlns=”urn:nhibernate-mapping-2.2″ namespace=”NHibernate.Tutorial.DAL” assembly=”NHibernate.Tutorial.DAL”>

<class name=”persona” table=”PERSONA” lazy=”false”>

<id name=”Id” column=”Id” unsaved-value=”0″>

<generator class=”native” />

</id>

<property name=”Nombre”>

<column name=”Nombre” not-null=”true” />

</property>

<property name=”Apellido”>

<column name=”Apellido” not-null=”true” />

</property>

</class>

</hibernate-mapping>

7.  Después que se genera el fichero XML, en las propiedades del mismo se debe establecer la Acción de Compilación (Biuld Action) como Recurso Incrustado (Embedded Resource) para que el fichero XML se incruste en el assembly a la hora de generar el proyecto.

8. Ahora se creará en la biblioteca de clases una nueva clase que llamaremos SessionFactory que será la encargada de leer todos los ficheros de mapeo, configuración y mantendrá una sesión que te permitirá interactuar con la base de datos.

public class SessionFactory{

private static ISessionFactory _SessionFactory;

private static void Init(){

Configuration config = new Configuration();

config.Configure();

config.AddAssembly(“NHibernate.Tutorial.DAL”);

_SessionFactory = config.BuildSessionFactory();

}

public static ISessionFactory GetSessionFactory(){

if(_SessionFactory == null)

Init();

return _SessionFactory;

}

public static ISession GetNewSession(){

return GetSessionFactory().OpenSession();

}

}

9. Ya queda poco para terminar de configurar NHibernate, ahora tendremos que decirle que tipo de base de datos estamos utilizando ya que NHibernate vale tanto para SQL Server, MySQL como Oracle. Para ello, abrimos el fichero web.config de nuestro sitio web y le agregamos la sección de configuración de NHibernate como se muestra a continuación.

<configSections>

<section name=hibernate-configuration type=NHibernate.Cfg.ConfigurationSectionHandler, NHibernate/>

</configSections>

<hibernate-configuration xmlns=urn:nhibernate-configuration-2.2>

<session-factory>

<propertyname=connection.provider>NHibernate.Connection.DriverConnectionProvider</property>

<property name=dialect>

NHibernate.Dialect.MsSql2005Dialect</property>

<property name=connection.driver_class>

NHibernate.Driver.SqlClientDriver

</property>

<property name=connection.connection_string>

Data Source=.\SQLEXPRESS;

AttachDbFilename=|DataDirectory|\TUTORIAL.mdf;

Integrated Security=True;

User Instance=True;

</property>

<property name=proxyfactory.factory_class>

NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle</property>

</session-factory>

</hibernate-configuration>

10.  Se debe tener en cuenta que tanto el web.config como los ficheros XML de mapeo de NHibernate son sensibles a mayúsculas y minúsculas.

10.1 Añadimos una nueva clase en la biblioteca de clases que llamaremos PersonaService, esta clase será la encargada de actuar con NHibernate y será quien reciba las peticiones desde el código del sitio web. Expondrá dos métodos, para añadir y obtener personas desde/hasta la base de datos.

public static IList<persona> GetTodasPersonas(){

IList<persona> personas;

using(NHibernate.ISession NHSession = SessionFactory.GetNewSession()){

NHibernate.ICriteria qry = NHSession.CreateCriteria(typeof(persona));personas = qry.List<persona>();

}

return personas;

}

public static void AnadirPersona(persona persona){

using (NHibernate.ISession NHSession = SessionFactory.GetNewSession()){

using (NHibernate.ITransaction tx = NHSession.BeginTransaction()){

NHSession.Save(persona,persona.Id);

tx.Commit();

}

}

}

11.  Ahora, todo lo que queda por hacer es crear en el sitio web el código necesario para mostar y añadir personas a nuestra base de datos a través de la clase PersonaService

Para lo cual, primero en Default.aspx vamos a colocar un GridView, 3 TextBox (ID, Nombre y Apellido) y un botón.

12. A continuación se añade una referencia a la biblioteca de clases y se agrega la directiva using NHiberante.Tutorial.DAL en el fichero del código Default.aspx y se hará que el GridView se cargue automáticamente con las personas de nuestra base de datos, quedando 3 métodos como los siguientes:

protected void Page_Load(object sender, EventArgs e){

if (!IsPostBack)

MostrarTodasPersonas();

}

private void MostrarTodasPersonas(){

this.GridView1.DataSource = PersonaService.GetTodasPersonas();

this.GridView1.DataBind();

}

protected void Button1_Click(object sender, EventArgs e){

persona persona = new persona();

persona.Id = Int32.Parse(this.TextBox3.Text);

persona.Nombre = this.TextBox1.Text;

persona.Apellido = this.TextBox2.Text;

PersonaService.AnadirPersona(persona);

MostrarTodasPersonas();

}

13.  Para finalizar, se establece el sitio Web como proyecto por defecto y se pulsa F5 para ver nuestro primer sitio web con NHibernate.


Probado, ahora hazlo tú !!😛

Fuente: http://www.planetpuntonet.es

Este es un tutorial que te permitirá usar el Motor de persistencia Nhibernate.

Primero:

Qué es un motor de persistencia?

Los motores de persistencia, que en el mundo de la programación no es más que un componente de software (una capa de programación), también conocido como “capa de datos”, “capa de persistencia” o “correspondencia O/R (“OR mapping”)”, son los que permiten establecer una capa intermedia entre el sistema orientado a objetos y la base de datos relacionales donde se almacenarán toda la información del mismo.

Esta solución brinda las mejores ventajas de ambos modelos:

  • Por una parte, se puede programar con orientación a objetos, aprovechando las ventajas de flexibilidad, mantenimiento y reusabilidad.

  • Por otra parte, el poder usar una base de datos relacional, aprovechándose de su madurez, la estandarización y las herramientas relacionales que hay para ella.

En la actualidad existen distintos tipos de motores de persistencia. Entre los de código abierto se pueden destacar: Hibernate, Castor, Torque, OJB y Cayenne. Entre los comerciales, se pueden nombrar: TopLink, Cocobase y FastObjects. En los últimos años se ha creado una especificación llamada JDO, para estandarizar la forma de programar en Java con esos motores de persistencia. Ejemplos de motores de persistencia que cumplen el estándar JDO son Kodo, JDO Genie, LiDo, Exadel JDO, IntelliBO, JRelay JDO (todos ellos comerciales), Speedo JDO, TJDO y XORM (de código abierto).

En el presente informe se mostrará el ejemplo “NHibernate.Tutorial” usando el motor de persistencia NHibernate, que es una parte del famoso framework Open Source Hibernate desarrollado en Java y una de las primeras aproximaciones para el mundo .NET de proyectos ORM, una base de datos: “TUTORIAL” implementada en SQL Server 2005 y Visual Studio 2008 para su desarrollo en el lenguaje .NET.

Este es un tutorial que te permitirá usar el Motor de persistencia Nhibernate.

Primero:

Qué es un motor de persistencia?

Los motores de persistencia, que en el mundo de la programación no es más que un componente de software (una capa de programación), también conocido como “capa de datos”, “capa de persistencia” o “correspondencia O/R (“OR mapping”)”, son los que permiten establecer una capa intermedia entre el sistema orientado a objetos y la base de datos relacionales donde se almacenarán toda la información del mismo.

Esta solución brinda las mejores ventajas de ambos modelos:

  • Por una parte, se puede programar con orientación a objetos, aprovechando las ventajas de flexibilidad, mantenimiento y reusabilidad.

  • Por otra parte, el poder usar una base de datos relacional, aprovechándose de su madurez, la estandarización y las herramientas relacionales que hay para ella.

En la actualidad existen distintos tipos de motores de persistencia. Entre los de código abierto se pueden destacar: Hibernate, Castor, Torque, OJB y Cayenne. Entre los comerciales, se pueden nombrar: TopLink, Cocobase y FastObjects. En los últimos años se ha creado una especificación llamada JDO, para estandarizar la forma de programar en Java con esos motores de persistencia. Ejemplos de motores de persistencia que cumplen el estándar JDO son Kodo, JDO Genie, LiDo, Exadel JDO, IntelliBO, JRelay JDO (todos ellos comerciales), Speedo JDO, TJDO y XORM (de código abierto).

En el presente informe se mostrará el ejemplo “NHibernate.Tutorial” usando el motor de persistencia NHibernate, que es una parte del famoso framework Open Source Hibernate desarrollado en Java y una de las primeras aproximaciones para el mundo .NET de proyectos ORM, una base de datos: “TUTORIAL” implementada en SQL Server 2005 y Visual Studio 2008 para su desarrollo en el lenguaje .NET.

Este es un tutorial que te permitirá usar el Motor de persistencia Nhibernate.

Primero:

Qué es un motor de persistencia?

Los motores de persistencia, que en el mundo de la programación no es más que un componente de software (una capa de programación), también conocido como “capa de datos”, “capa de persistencia” o “correspondencia O/R (“OR mapping”)”, son los que permiten establecer una capa intermedia entre el sistema orientado a objetos y la base de datos relacionales donde se almacenarán toda la información del mismo.

Esta solución brinda las mejores ventajas de ambos modelos:

Por una parte, se puede programar con orientación a objetos, aprovechando las ventajas de flexibilidad, mantenimiento y reusabilidad.

Por otra parte, el poder usar una base de datos relacional, aprovechándose de su madurez, la estandarización y las herramientas relacionales que hay para ella.

En la actualidad existen distintos tipos de motores de persistencia. Entre los de código abierto se pueden destacar: Hibernate, Castor, Torque, OJB y Cayenne. Entre los comerciales, se pueden nombrar: TopLink, Cocobase y FastObjects. En los últimos años se ha creado una especificación llamada JDO, para estandarizar la forma de programar en Java con esos motores de persistencia. Ejemplos de motores de persistencia que cumplen el estándar JDO son Kodo, JDO Genie, LiDo, Exadel JDO, IntelliBO, JRelay JDO (todos ellos comerciales), Speedo JDO, TJDO y XORM (de código abierto).

En el presente informe se mostrará el ejemplo “NHibernate.Tutorial” usando el motor de persistencia NHibernate, que es una parte del famoso framework Open Source Hibernate desarrollado en Java y una de las primeras aproximaciones para el mundo .NET de proyectos ORM, una base de datos: “TUTORIAL” implementada en SQL Server 2005 y Visual Studio 2008 para su desarrollo en el lenguaje .NET.

fgcgfbcvczczxc

Los motores de persistencia, que en el mundo de la programación no es más que un componente de software (una capa de programación), también conocido como “capa de datos”, “capa de persistencia” o “correspondencia O/R (“OR mapping”)”, son los que permiten establecer una capa intermedia entre el sistema orientado a objetos y la base de datos relacionales donde se almacenarán toda la información del mismo.

Esta solución brinda las mejores ventajas de ambos modelos:

  • Por una parte, se puede programar con orientación a objetos, aprovechando las ventajas de flexibilidad, mantenimiento y reusabilidad.

  • Por otra parte, el poder usar una base de datos relacional, aprovechándose de su madurez, la estandarización y las herramientas relacionales que hay para ella.

En la actualidad existen distintos tipos de motores de persistencia. Entre los de código abierto se pueden destacar: Hibernate, Castor, Torque, OJB y Cayenne. Entre los comerciales, se pueden nombrar: TopLink, Cocobase y FastObjects. En los últimos años se ha creado una especificación llamada JDO, para estandarizar la forma de programar en Java con esos motores de persistencia. Ejemplos de motores de persistencia que cumplen el estándar JDO son Kodo, JDO Genie, LiDo, Exadel JDO, IntelliBO, JRelay JDO (todos ellos comerciales), Speedo JDO, TJDO y XORM (de código abierto).

En el presente informe se mostrará el ejemplo “NHibernate.Tutorial” usando el motor de persistencia NHibernate, que es una parte del famoso framework Open Source Hibernate desarrollado en Java y una de las primeras aproximaciones para el mundo .NET de proyectos ORM, una base de datos: “TUTORIAL” implementada en SQL Server 2005 y Visual Studio 2008 para su desarrollo en el lenguaje .NET.

Publicado en How to. 4 Comments »

4 comentarios to “NHibernate – Visual Studio 2008, MySQL Server 2005 y C#”

  1. Geovanny Fonseca M. Says:

    He estoy tratando de seguir tu ejemplo pero me da varios errores.
    1. de cual libreria es ISessionFactory
    2. Tengo el mismo problema al declarar la variable config, de donde uso Configuration.

    Por lo demás el ejemplo es bastante claro, solo necesito esas dos aclaraciones para poder terminar de hacer las pruebas.

    • syreniad Says:

      Hola Geovanny, que bien que el ejemplo te haya quedado claro. A tus preguntas respondo:

      Librerias de ISessionFactory

      -En mi proyecto hago “using” de:

      using System;
      using System.Collections.Generic;
      using System.Text;
      using NHibernate;
      using NHibernate.Cfg;
      using NHibernate.Tool.hbm2ddl;

      y en las referencias agrego:


      Antlr3.Runtime.dll
      Castle.Core.dll
      Castle.DynamicProxy2.dll
      Iesi.Collections.dll
      log4net.dll
      NHibernate.ByteCode.Castle.dll
      NHibernate.dll
      NHibernate.Tutorial.DAL.dll
      nunit.framework.dll

      me aparece mucho que quizás agregando los “using” también resolverá el problema con el “config”. Pues en el post comenté las librerías necesarias para el proyecto NHibernate.Tutorial.DAL (las cuales te nombré nuevamente aquí), donde va la clase SessionFactory.

      Saludos!

  2. estela4 Says:

    me parece excelente el tutorial me ayudado a compreder un poco el codigo, pero soy estudiante en software y quiciera saber como hacer un mantenimiento para una tabla de departamentos es que tengo una tarea de bienes y raices y no se como hacerlo gracias

  3. Samir Says:

    Hola,

    Estoy tratando de seguir tu ejemplo sin embargo, cuando despliega la pagina, no me muestra datos en el gridview ni tampoco me agrega cuando intento agregar me sale error No persister for: NHibernate.Tutorial.DAL.Persona

    Coloque un boton para llamar el metodo GetTodasPersonas() pero no me muestra nada.

    Que puede estar pasando, como se si me esta haciendo la consulta.

    Bueno yo no trabajo con el SQLEXPRESS que trae visual studio yo instale sqlserver2008 completo. sin embargo yo trabajo normal con las bases de datos de sql server 2008 en otras aplicaciones. La cadena de conexion esta correcta y en el Dialect de config.xml ya cambie 2005 por 2008 pero no me salen los datos a pesar de no salirme errores.


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: