1. Desarrollo en Capas con “mejorando la productividad y reutilizaciòn” Disertante: Jorge Ercoli (Analista de Sistemas) Jornadas sobre Desarrollo de Software UTN Centro de Estudios Mar del Plata - Argentina
2.
3.
4.
5.
6.
7. Arquitectura sin Capa de Negocio Presentaciòn Acceso a Datos InscribirClick( ) { conf_Id=ComboConferencia.SelectedValue; oye_Id=LabelOyenteId; dtOyeInsc= sqlExec(“sele * from conf_oye where…”); if (dtOyeInsc.Count()=0) // Oyente inscripto?? Inscriptos=sqlExec(“sele count(*) from conf_oye…”); dtSalon= sqlExec(“sele * from Salon where Id=…”); if (dtSalon(0).Capacidad – Inscriptos > 0) sqlExec(“Insert into conf_oye … values …”); else Mostrar(“No Hay Vacantes !!”); else Mostrar(“Oyente ya inscripto !!”); }
8. Arquitectura con Capa de Negocio InscribirClick( ) { conf_Id=ComboConferencia.SelectedValue; oye_Id=LabelOyenteId; ProcesoInscrip i=new ProcesoInscrip(); try { i.Inscribir (conf_Id, oye_Id); } catch (Excepcion ex) } Negocio Presentaciòn Acceso a Datos
28. NH - Paso 5, usemos el ORM!! 1. Agregamos una referencia a NHibernate.dll (para usarlo en nuestra aplicación) 2. Creamos un objeto de Configuración Configuration cfg = new Configuration(); 3. Le decimos al Configuration sobre los tipos de objetos que vamos a persistir cfg.AddAssembly(“TPVBO"); // En TPVBO.dll están mis class con mis class.hbm.xml .... 4. Creamos una Fabrica de sesiones (1 X BD) y luego le pedimos una Session y comenzamos una transacción. ISessionFactory factory = cfg.BuildSessionFactory(); ISession session = factory.OpenSession(); ITransaction transaction = session.BeginTransaction(); 5. Trabajamos con nuestros objetos Producto p=new Producto(); p.Codigo=“CA123”; p.Descripcion=“Camisa CA”; p.Precio=59.90; session.Save(p); 6. Grabamos la transacción en la BD y cerramos la sesión. transaction.Commit(); session.Close();
29.
30.
31. NH – Manejo de colecciones // Creo una Venta Venta v=new Venta(); v.Fecha=hoy; v.Numero=22; // Creo 2 lineas de venta LineaVenta l1=new LineaVenta(); l1.Cantidad=10; l1.Producto=session.Load(typeof(Producto),155); LineaVenta l2=new LineaVenta(); l2.Cantidad=5; l2.Producto=session.Load(typeof(Producto),189); // agrego a la colección de lineas de venta de v, las 2 lineas creadas v.lineas.Add(l1); v.lineas.Add(l2); // grabo la venta a la session con sus 2 lineas (por tener el cascade=all ): En la BD se inserta una fila en // Venta y 2 en LineaVenta session.Save(v); session.Flush();