Hola Guillermo,

La verdad es que durante los ultimos años yo estuve tambaleando de una forma
parecida, cada vez intentando aprender mas objetos y mas el modelo
relacional e intentando definir una forma buena de trabajo en .net…

La verdad es que no encontre y dudo mucho que exista una forma ideal de
programación, pero te puedo decir algunas cosas que vi yo:

 

*         NHIb:

Usar NH no es simplemente algo para hacer un insert y un select, implica
tambien una forma de pensar en objetos… cuando pensas en objetos (algo en lo
cual me falta mucho perfeccionamiento) partis de lo que tenes en la
realidad, exactamente lo tiene tu cliente y eso es con lo que te vas a guiar
durante toda tu aplicación... si entendiste bien el modelo de tu cliente,
cambios en el futuro van a terminar resultando en extensiones de lo que vos
decidiste modelar, pero rara vez en modificaciones grandes a lo ya
existente, despues de todo tu cliente sigue trabajando mas o menos de lo
mismo durante el ciclo de vida del proyecto!

La diferencia radica mucho en como te presentan el problema, si te cuentan
absolutamente todo intentando hacer que vos entiendas de que trabajan ellos,
hacer el modelo va a ser muy facil y la aplicación la vas a ir guiando para
que sea usable, sin recurrir a cosas extrañas… Pero si el cliente te dice:
“Quiero una tabla editable”, seguramente empieces creando la tabla en la DB
y mapeandola con la grilla, las modificaciones y campos raros ( 1:N, N:M,
etc..) los vas a ir cambiando despues…

 

*         DataSets:

Te va a ser mucho mas facil empezar a programar algo porque el modelo
relacional es mas facil (para lo que solemos estar acostumbrados), pero en
general se parte de lo que se quiere (ej: la grilla con los datos) y no con
lo que significan esos datos, es por eso que cuando avanza el proyecto los
cambios van siendo mas complejos…

Otra gran desventaja de los datasets es que no podes aplicar conceptos
basicos de OOP, como por ejemplo herencia. Entonces tenes otros problemas
que vas a terminar solucionando usando cosas no tipadas o copiando codigo o
haciendo cosas que es mejor no pensarlas…

Con respecto a lo del Aceptar() y Cancelar() de los DataSets, es algo
bastante bueno que es complejo de imitar usando Objetos, pero yo puedo vivir
perfectamente sin ese feature, solo hay que evitar pensar en eso…

 

Sin embargo nhibernate tiene algunas limitaciones con son bastante molestas
y bastante utiles para prohibirle al programador hacer cosas raras, en tu
caso lo que yo haria es hacer toda la aplicación partiendo del modelo sin
pensar en la DB (si te manejas con TDD y Repositorios Mock mucho mejor) y
una vez que la aplicación este avanzada metes datasets o algun mapper mas
simple (creo que serviria IBatis) para hacer los reportes… (Tambien se puede
hacer con NH, pero me parece que no intenta ser el objetivo de NH…)

 

Saludos!,

Diego

 

p.d.: Obviamente se puede pensar bien en un modelo relacional, pero es mucho
mas complicado… Tengo entendido que Daniel Calvin hace eso: Piensa el modelo
de objetos en un papel, crea las tablas y despues genera (powered by
Cooperator) el codigo de las clases (no usa DataSets y piensa realmente en
objetos, pero en algun sentido hace primero el modelo relacional)

 

  _____  

From: [email protected]
[mailto:[EMAIL PROTECTED] On Behalf Of Guillermo Ruffino
Sent: Jueves, 01 de Febrero de 2007 23:44
To: [email protected]
Subject: [NHibernate-Hispano] Estilos de programacion y preguntas

 

Hola, les cuento que estoy haciendo con un companiero una aplicación TIPICA
de ventas.

En fin, es muy nuevita y la estamos encarando con .net 2 y generics.

Tenemos partes con DataSets y otras partes con NHibernate.

Mi trayectoria es el siguiente, cuando naci existía GWBasic, y aprendi base
de datos relacionales después de aprender orientación a objetos, (un poco al
revés)  

Mi primer trabajo serio (en cuanto a calidad de la aplicación) fue un
orientado a objetos con serializacion binaria.

Despues de eso tuve ke caer en la realidad y termine con typed DataSet en
.net 1.1

Ahora trabajo mucho con ASP.NET y mucho con reporting, y reporting no es un
escenario ideal para nhib, asi ke no lo uso en ASP.NET. 

Estoy dando mis primeros pasos con NH en una aplicación Windows, y me gusta
la programación de capas aplastadas (sin capas casi) entonces en el botón
aceptar tengo un Session.Save();

 

Lo que me gusta de DataSets es que se trabaja en memoria y luego el usuario
decide si le da a Aceptar() o a Cancelar().

 

En NH sin embargo, lo único que estoy viendo de momento es almacenar listas
de objetos que necesiten Save, Delete y Updates! Me parece un poquito
incomodo y saber si alguien tiene alguna experiencia en compartir…

 

Saludos





--~--~---------~--~----~------------~-------~--~----~
Para escribir al Grupo, hágalo a esta dirección: 
[email protected]
Para más, visite: http://groups-beta.google.com/group/NHibernate-Hispano
-~----------~----~----~----~------~----~------~--~---

Responder a