Guillermo si te interesa y tenes ganas podes ver esto

https://svn.sourceforge.net/svnroot/acs-nh/ACS/trunk

no es una aplicacion que este funcionando ni mucho menos, solo era algo que 
estoy haciendo en mis ratos libres para ver cosas como TDD, DDD, como comenta 
Angel.

Tengo que cambiarle la presentacion porque ahora esta usando unos componentes 
devexpress. Cuando lo haga te aviso.

Saludos.

Pd: no digo que eso que te paso este bien ni mucho menos, pero quizas te puede 
dar una pauta

--------------------------------------------------------------------------------

rdi2k | Ezequiel Jadib | MSN: [EMAIL PROTECTED] | Blogs: 
http://geeks.ms/blogs/ejadib/ (ES) - ejadib.wordpress.com (EN) 
  ----- Original Message ----- 
  From: Guillermo Ruffino 
  To: [email protected] 
  Sent: Friday, February 02, 2007 1:31 AM
  Subject: [NHibernate-Hispano] Re: Estilos de programacion y preguntas


  Diego, Gracias por tus comentarios.

   

  De momento NHibernate me esta dando mejores resultados que los DataSet 
mejorados (digo mejorados porque me los conocía con el DataAdapter y ahora 
tengo el TableAdapter que es un poco mas masticable) Pero en realidad no se 
cual de los dos es mas difícil.

  Hacer un archivo de mapeo con nhib es muy difícil!!! 

  Hacer un abm u otras cosas que con objetos son lindas con datasets es difícil:

  PersonaDataTable p = new PersonaDataTable();

  PersonaDataRow dr = p.NewPersonaRow();

  dr.Nombre = "Juan";

  dr.AddPersonaRow(dr);

  PersonaTableAdapter.Update(p);

  En TSQL es mas intuitivo!!!

  Nhib es definitivamente mejor:

  Persona p = new Persona();

  p.Nombre = "Juan";

  sesión.Save(p);

  Por ahí agarrar una DB bien hecha y mapearla con un codegen a hbm y cs, te 
queda algo usable, sin lios y en 20 capas, pero. ese modelo de objetos es lo 
que queremos?

  Aquí tenemos la posibilidad de "aprovecharnos" de los objetos y usar 
herencia, polimorfismo referencias N:N o de las que van hacia un lado (el email 
que no es una entity en el problema de Chili)

  Con datasets no hay que pensarlo mucho, o lo haces igual que la base de datos 
o no lo haces, como digo yo: elegís entre si lo quieres o no lo quieres.

   

  Creo que si uso NHib va a ser para que la aplicación sea linda de mirar por 
dentro, y la db va a quedar "ajustada" como siempre, con todas las decoraciones 
que se le puede hacer al modelo relacional.

   

  From: [email protected] [mailto:[EMAIL PROTECTED] On Behalf 
Of Diego Jancic
  Sent: Friday, February 02, 2007 00:45
  To: [email protected]
  Subject: [NHibernate-Hispano] Re: Estilos de programacion y preguntas

   

  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