Llegó NHibernate Validator 1.0.0 GA
Posted by Dario Quintana in NHibernate.Validator on October 2nd, 2008
Se hizo esperar la versión 1.0.0 GA, pero está lista para descargar desde aquí.
NHibernate no está integrado con el compilador, y qué ?
Posted by Dario Quintana in NHibernate on September 6th, 2008
Bueno, sé que el titulo suena como “eh !?”, pero dejenme explicarlo un poco más en detalle.
NHibernate es una framework que usa Xml nativamente para configurar los mapeos entre objetos y tablas, que está encargado de juntar estos 2 mundos diferentes.
Ahora, qué tiene de malo esto? Mucha gente puede decir que los archivos Xml son malos, por que después de escribir muchas líneas, intentamos compilar nuestro proyecto, y el compilador de nuestro lenguaje host no sabe si el Xml está bien o no, no nos informa con ningún error. Esto es verdad, se debería correr el proyecto y ver que acontece en tiempo de ejecución, y obtener un error en runtime es simplemente molesto.
Pero bien, tenemos otra alternativa a esto? La respuesta es sí. Vayamos a los detalles. NHibernate tiene también un “compilador”, y si todavía no te lo imaginaste, es el método BuildSessionFactory(). No es necesario lanzar toda la aplicación para saber si nuestros mappings están bien o mal. Una manera de saber si todo está bien es crear un metodo de Test como este:

Luego solamente queda compilar nuestro proyecto, y correr este simple y tonto test. Si nuestro código pasa esta prueba, tus mapeos están bien.
Debemos recordar una cosa, se puede mapear no solamente entidades en los Xml, también se pueden mapear Queries (y otras cosas que no son relevantes en este post). El mapear queries en Xml se llama: Named Queries, y en este post hablamos un poco más de sus bondades. Pero el punto principal aquí es, que mapeando las queries sabrás si están bien formadas o no cuando el método BuildSessionFactory() es disparado (se hacen otras cosas aparte de compilar las queries, se discuten en ese post).
Otra cosa que DEBES recordar es usar Xsd para validar los mappings files. Esto es obligatorio si estás usando NHibernate y quieres pasar el tiempo programando en vez de luchando con errores de mapeo (aquí los errores pueden ser inclusive de Xmls mal formados, donde esto es más grave). Pero esto es tema para otro post.
XUnit 1.0.2 y Resharper 4.1
Posted by Dario Quintana in Testing, Tool on September 4th, 2008
Abraza hoy a un programador
Posted by Dario Quintana in programación on September 1st, 2008
nhforge.org listo !
Posted by Dario Quintana in NHibernate on August 31st, 2008
Bueno, esto es lo que venimos buscando hace un tiempo con la comunidad de NHibernate y lo estamos logrando. Este fin de semana, después de un largo proceso de configuración pudimos dejarlo funcional.
www.nhforge.org
La explicación de qué es NHForge está muy bien explicado en el “welcome”, creo que sobran más que esas palabras.
Hay algo que si les interesa NHibernate DEBEN hacer: es suscribirse a el feed del blog de NHibernate.
Aprendiendo a usar frameworks, desde adentro
Posted by Dario Quintana in programación on August 27th, 2008
En estos días, en el desarrollo de aplicaciones, es muy común usar frameworks que nos ayuda a resolver un problema en particular. Inclusive existen frameworks que resuelven necesidades similares entre sí. Estas piezas de software quizás a parte de solucionar problemas, cubren alguna carencia en el “foundation”, lease: el framework base (.Net Framework 2.0, J2SE, entre otros). Esta carencia por lo general se transforman en alguna clase o un conjunto de clases que funcionan orquestadas con un fin.
Una de las ventajas que el open-source nos brinda es la posibilidad de tener el control sobre el código. Usamos el código que miles de programadores en el mundo lo dejan a nuestra disposición.
Hablando de .Net ó Java, enumeremos algunos frameworks open source, sin orden particular, solamente son los que estoy recordando en este momento: NUnit, Moq, NHibernate, Castle Project: Monorail, Windsor, Microkernel, ActiveRecord, log4net, Db4o, XUnit, Enterprise Library, SeamFramework, NakedObjects, Spring entre otros.
Seguro que estarán familiarizados con muchos de ellos, seguramente muchos de ellos son usados por Uds. todos los días.
Alguna vez se pusieron a ver el código de ellos? Les recomiendo que lo hagan, es un buen ejercicio. Mirar código realizado por otro programador puede ayudar a aprender, ordenar ideas, obtener otros puntos de vista, entre otras virtudes.
Vamos a un ejemplo, de una librería que uso y conozco como para poder opinar: NHibernate. Que podríamos obtener de NHibernate y que lo podemos llevar a nuestro código?
Nombremos algunas clases o conjunto de clases útiles que podemos usar en nuestro código (solamente enumeraré algunas):
- StringTokenizer: port del StringTokenizer de Java.
- ReflectorOptimizer (bajo namespace NHibernate.Bytecode).
- SimpleMRUCache: Caché que mantenida por un algoritmo Most Recently Used.
- ReflectHelper: servicios de reflection.
- ThreadSafeDictionary (los muchachos que hicieron el .Net Framework 2.0 se durmieron al no incluir una clase similar, por suerte se dieron cuenta en el 3.0 hay collections, dictionaries thread-safe).
Estos items son solamente para tentarlos a que investiguen más y vean que pueden encontrar. Un punto a considerar, es que NHibernate se trata de un port (con features propias) de Hibernate -Java-, entonces quizás encuentren clases que se necesitaron portar por no estar presentes (con algún substituto) en .Net Framework. Si analizan Spring.Net desde adentro, se van a encontrar con sorpresas: no solamente fueron portadas clases, sino frameworks completos de J2SE.
En otros post analizaremos algunas consideraciones de diseño, o quizás algunos patrones de algún framework en particular, siempre hay algo para aprender.
Cuanto se ha cambiado NHibernate desde 1.2.1 hasta 2.0 GA?
Posted by Dario Quintana in NHibernate, Tool on August 26th, 2008
Patrick Smacchia me envia este link donde analiza NHibernate con NDepend.
Quiero que aprecien el análisis que realizó con esta herramienta, donde el que considero más importante son el análisis de los cambios realizados. En el enlace vean el gráfico con las zonas pintadas de azul, y van a ver cuantos cambios se hicieron
NHibernate 2.0: Changes Overview
NHibernate Validator Specific
Posted by Dario Quintana in NHibernate.Contrib, NHibernate.Validator on August 25th, 2008
Una de las características nuevas de NHibernate Validator 1.0 CR1 es la librería: NHibernate.Validator.Specific. En este post comentaba un poco la idea. Esta librería agrega validadores específicos para países, validadores que no son competencias del “Core” de NHibernate.Validator.
Los validadores específicos de NHibernate.Validator son los siguientes:
- Para Argentina: CUIT
- Para Uruguay: Cédula de Identidad
- Para Italia: Codice Fiscale y Partita IVA
(Cualquier semejanza con los países de procedencia de los 3 autores de NHibernate.Validator es pura coincidencia
)
Por ejemplo: para validar el CUIT, debemos anotar a nuestras entidades con el attribute: CUITAttribute.
Y luego validar la entidad usando el ValidatorEngine:

NHibernate Validator 1.0 CR1
Posted by Dario Quintana in NHibernate, NHibernate.Contrib, NHibernate.Validator on August 25th, 2008
Espero que disfruten the esa nueva release de este increible framework de validación. Incluimos en esta release más estabilidad, más documentación, ejemplos y el punto más importante es la completa compatibilidad con NHibernate 2.0 GA.
Como siempre los issues deben reportarse aquí:our issue-tracker.
Binarios, codigo fuente y ejemplos: descargar aquí !
NHibernate 2.0 G.A. es release !
Posted by Dario Quintana in NHibernate on August 23rd, 2008