Muy bueno Ángel, 

Creo que usar capas es como usar herencia en las tareas de la aplicación, y
son esenciales a la hora de aplicar un DRY (Don’t repeat yourself) pero como
mi aplicación es Windows y estoy apurado, de momento el exe es lo que hace
todo (si, ya se que el assembly no es una capa) y surgirá algo mas separado
si es necesario.

 

Yo en realidad quería preguntar algo mas simple que un paradigma de esos, mi
pregunta mejor formulada seria:

 

Si estas editando una lista de “Personas” y le dejas al usuario hacer Add /
Remove / Delete, como le haces el seguimiento a los objetos después para
llamar al Save, Update o Delete a cada Entidad?

Yo de momento lo estoy solucionando con una lista: personasAAgregar,
personasAEliminar, personasAActualizar, como es la primera vez que tuve que
hacer algo asi y nunca vi como lo soluciona otra persona (es lo ke se me
ocurrió que iba a funcionar con nhib y por eso lo use) quería saber si
alguien tenía otra alternativa a este problema. 

 

PD: 

Persona p = new Persona()

p.Nombre = "..."

session.Save(p)

 

se puede plantear algo como

 

Persona p = new Persona()

p.Nombre = "..."

ServicioPersona.Save(p)

Eso esta bueno, me hace pensar que interponer una capa entre la UI (win o
asp o xml) y Nhib (o datos) va a ser no-op’s.

 

Gracias!!!

 

From: [email protected]
[mailto:[EMAIL PROTECTED] On Behalf Of Angel "Java" Lopez
Sent: Friday, February 02, 2007 10:45
To: [email protected]
Subject: [NHibernate-Hispano] Re: Estilos de programacion y preguntas

 

Hola gente!

Interesante tu pregunta, Guillermo. Algunos comentarios sobre como en
general trabajo...

 

Yo prefiero tener una capa de servicio, una simple fachada, que me brinde
toda la funcionalidad que necesita mi presentacion (o las posibles
presentaciones que luego aparezca). Asi, en vez de

 

Persona p = new Persona()

p.Nombre = "..."

session.Save(p)

 

se puede plantear algo como

 

Persona p = new Persona()

p.Nombre = "..."

ServicioPersona.Save(p)

 

Ahora, igual aca se puede plantear otro tema: esto es un simple CRUD de
personas. Llegara el momento, o la aplicacion, donde la logica del dominio,
del problema a resolver, no sea tan simple. Apareceran actividades a
implementar, mas grandes que simplemente insertar una persona en la base. Me
imagino:

 

Empleado e = new Empleado(....datos del nuevo empleado....)

ServicioRecursosHumanos.NuevoEmpleadoContratado(e)

 

En ambos casos, recurro a Servicio, una capa de servicio. Si de ahi para
abajo, hay NHibernate, o lo que sea, no me interesa en general.

 

Despues, podemos discutir la linea

 

Empleado e = new Empleado(....datos del nuevo empleado....)

Porque tener empleado ahi? Y si ponemos en vez del new una factoria? Bueno,
a veces, solo a veces, necesitaremos algo mas, para un proceso de negocio
mas dificil, no enviamos solo entidades. Enviamos mensajes, que llegan a la
capa de servicio, y hacen actuar a nuestro modelo del negocio. Me imagino un
proceso que necesite hacer una transferencia entre dos cuentas, pueden tener

 

ServicioTransferencia.Transferir(idctaorigen,idctadestino,importe)

 

Abajo de eso, levantaremos las entidades cuentas, lo que sea, o llamaremos a
un procedimiento almacenado, o lo que hayamos decidido hacer.

 

Luego, en algun momento habra que investigar las ideas de Domain Driven
Design, donde entonces el NHibernate empieza a brillar, al posibilitar
implementar DAOs, invocados desde repositorios, sin "molestar" mucho en
nuestro modelo de domino. Veria el libro y los enlaces de:

 

http://ajlopez.wordpress.com/tag/domain-driven-design/

 

Jeje... y como siempre, servicio, entidades, mapeo NHibernate, base de
datos, lo genero con AjGenesis, ver el ejemplo
http://msmvps.com/blogs/lopez/archive/2006/03/07/85650.aspx

 

(hay en la pagina del proyecto, templates para Domain-Driven Design, que
estoy mejorando).

 

DataSets los uso para enviar desde servicio, datos a la presentacion, en
general para ligar a grillas. Sino, en general, envio lo que en java serian
beans, simples objetos con datos adentro, que se ligaran a la presentacion,
y luego volveran de alguna forma al servicio.

 

Nos leemos!

Angel "Java" Lopez
http://www.ajlopez.com/
(yes!! it's my sabbatical week!!!.... 
http://ajlopez.wordpress.com/2007/01/27/sabbatical-week/ )

----- Original Message ----- 

From: Guillermo Ruffino <mailto:[EMAIL PROTECTED]>  

To: [email protected] 

Sent: Thursday, February 01, 2007 11:43 PM

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