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 -~----------~----~----~----~------~----~------~--~---
