Menú principal
Inicio
Artículos
Noticias
Histórico de la Lista
Linux IDES
Linux Week
Descargas
Video Tutoriales
Opinión Software Libre
Preguntas frecuentes
Eventos Próximos
Talleres de Linux y LaptopFest
Encuesta
¿Que sección del portal Tuxpuc te agrada más?
 
Galería TuxPuc
Últimas noticias
Sindicación
 


Este portal se ve mejor con Firefox

Firefox

NHibernate: Ventajas y Desventajas
escrito por Franco Cedillo Crisosto   
Tuesday, 23 de October de 2007
 

NHibernate: Ventajas y Desventajas

A continuación comparto con ustedes un artículo de información técnica sobre la tecnología NHibernate que es un framework para el trabajo con base de datos.

 

 

1.    Nombre del Framework

NHibernate for .NET

Líder de Proyecto
Sergey Koshcheyev
Aportantes
Ayende Rahien y otros
Último desarrollo
1.2.0.GA
Fecha de desarrollo
03 de Mayo del.2007
Requisitos
.NET Framework 1.1 o 2.0

2.    Pagina web del framework


3.    Datos técnicos

-   Criterios de selección
-   NHibernate Query Language
-   Manejo de caché
-   Relaciones M_N y bidireccionales.
-   Cargas polimórficas.


4.    Ventajas

-   Documentación de la comunidad de Hibernate, la más amplia alrededor del Object Mapping
-   Muchos ejemplos en internet
-   Última versión que incorpora lo presente en el mercado en el mes de Mayo de este año

-   Existe excelente documentación en Español:

Leandro Tuttini documenta un ejemplo práctico
http://ltuttini.blogspot.com/2007/08/nhibernate-ejemplo-prctico.html
Introducción a NHibernate por Martín Cabrera
http://mcabrera.datacenter1.com/articles/dotNET/nhibernate/
Darío Quintana presenta la herramienta de diseño de queries para NHibernate Query Analizer http://darionet.wordpress.com/2005/10/25/nhibernate/
Angel "Java" Lopez presenta: Generando código para NHibernate (Parte 1) y Recursos sobre Hibernate
http://msmvps.com/blogs/lopez/archive/tags/NHibernate/default.aspx
 

-    En inglés las dos fuentes más citadas son:

En The Code Project -> Optimizing Performance in NHibernate Part 2: A Collection of Enhancements
 http://www.codeproject.com/useritems/NHibernate_Perf2.asp  
En The Server Side -> NHibernate por Justin Gehtland
http://www.theserverside.net/tt/articles/showarticle.tss?id=NHibernate

 -   Del aportante más importante: Ayende Rahien

Almacenando queries en SQL dentro de un xml
http://www.ayende.com/Blog/archive/2006/06/24/7462.aspx
Ejemplo básico por Ayende Rahien
http://www.ayende.com/Blog/archive/7263.aspx

  
5.    Apreciación Propia  

-   Creo que es una herramienta muy buena y actualizada
-   Está presente en todos los análisis a herramientas del tipo Object Relational Mapper
http://c2.com/cgi/wiki?ObjectRelationalToolComparisonDotNet
-   Se considera muy fuerte dentro del desarrollo en  .NET
http://sharptoolbox.com/categories/object-relational-mappers


6.    Apreciación de Terceros

-   Los criterios generales para evaluar un ORM lo encontré aquí:
http://madgeek.com/Articles/ORMapping/EN/mapping.htm
-   Y en el caso específico de .Net fue aquí:
http://c2.com/cgi/wiki?ObjectRelationalToolComparisonDotNet


Puntos Positivos

-    Código abierto

-    Soporta DataBinding

-    Puede aceptar queries SQL directos (se los guarda en el xml)

-    Se puede integrar con frameworks de MVC ( como Struts para Java ) o metaframeworks como Spring.

-    Soporta las relaciones entre objetos (El usuario puede elegir el nombre y el tipo de datos de las llaves foráneas)

-    Soporta agrupamiento (GROUP BY)

-    Soporta agregación (COUNT, AVG, ETC.)

-    Soporta llaves primarias compuestas

-    Soporta asociaciones muchos a muchos y uno a muchos.

-    Soporta persistencia de propiedades a través de los campos de propiedades

-    Soporta persistencia de propiedades a través de accessors (get/set methods or properties y pueden ser privados)

-    Soporta trabajo offline y luego aplicar los cambios a la base de datos

-  Soporta WebServices (la tecnología más moderna para la Integración de aplicaciones web, y el paradigma de programación moderno de programación orientada a servicios, publicación de servicios)

-    Soporta tipos nulos

-    No se require generar código pre compilado


Puntos Negativos

 
 -  No soporta carga no transaccional lazy de relaciones

-   No soporta Aggregate Mappings - Single Un campo a muchos campos en la base de datos

-   No sorpota querying transparente a múltiples recursos de data


Puntos en duda, no se sabe, no se conoce


-   Soporte a móltiples servidores (clustering)

-   Uso de reflección en tiempo de ejecución

-   Filtrado de objetos en memoria sin consultar a la base de datos.

-   Batch Update (actualizar muchos objetos sin crear objetos).

-   Batch Delete (eliminar muchos objetos sin crear objetos, es útil en Delete en cascada para las relaciones “N A Muchos”





 
< Anterior   Siguiente >