Integrando NHibernate.Validator con Db4o
Para quien no están familiarizado con NHibernate Validator: es un buen framework para validar objetos en cualquier parte de nuestra aplicación.
Ahora, como podemos integrar esta herramienta para poder validar nuestros objetos antes de almacenar un objeto en Db4o? La respuesta es fácil.
Recordemos que NHibernate Validator puede configurarse para validar usando .Net Attributes o archivos Xml. En este caso veremos como hacerlo usando la primer aproximación. La clase Customer deberÃa lucir asÃ:

Ahora para hacer la integración, llamaremos a un helper que haga el trabajo por nosotros. Nuestro código lucirÃa asÃ:

Como puedes ver, con una simple clase ayudante podemos configurar la integración con una lÃnea de código, algo muy fácil. En esta lÃnea el método Initialize registra los eventos en Db4o.
Ahora, vayamos a ver la Validación en Acción. El código de abajo muestra a la aplicación intentando guardar una instancia inválida de un objeto:

Entonces cuando un Save/Update está a punto de ocurrir, primero que nada, NHibernate Validator chequeará si la entidad se encuentra dentro un estado válido, sino lo está, una InvalidStateException será lanzada, entonces Db4o encapsula esta excepción con una excepción EventException, que luego deberemos atrapar y desencapsular para recuperar la primera excepción, y de esta manera obtenemos los valores inválidos que de la entidad. SerÃa bueno que Db4o no encapsule la excepción pero por varios motivos esto no puede ser asÃ, esto fue discutido en el foro de Desarrollo de Db4o aquÃ.
Entonces, fue fácil integrar NHV con Db4o. No ?

Una de las cosas que me llama notablemente la atención, es la imposibilidad de poder configurar Db4o por medio de Xml, siendo algo tan común hoy en dÃa y por sobre todo naciendo en Java.
