SlideShare ist ein Scribd-Unternehmen logo
1 von 45
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
Temario ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object]
Componentes de Software  ,[object Object],[object Object],[object Object],* En .NET son los “assemblies” (ensamblados), los cuales pueden ser exe ò dll.
Beneficios de trabajar con componentes ,[object Object],[object Object],[object Object],[object Object]
Lògica de Negocio ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
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 !!”); }
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
[object Object],ConferenciaWeb  2 capas ( DataSets Tipados ) Jorge Ercoli  (http://metodologiasdesistemas.blogspot.com)
3 Capas Lògicas Presentaciòn Negocio Acceso a Datos BD ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Capa de Negocio ,[object Object],[object Object],[object Object],[object Object],[object Object]
Arquitectura “No Intrusiva” (agnóstica) para la Capa de Negocio ,[object Object],Jorge Ercoli  (http://metodologiasdesistemas.blogspot.com)
Patrones para la Capa de Negocio ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Patrones para la Capa de Negocio (II) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Patrones para la Capa de Negocio (III) ,[object Object],[object Object],[object Object]
Acceso a datos - Persistencia ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Ventajas de usar un ORM ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Patrones para persistir objetos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Active Record
Data Mapper
Data Mapper (II) ,[object Object],Martin Fowler Patròn DAO (Data Access Object)
DAO - Ejemplo
Ejemplo de ORM: NHibernate  Arquitectura
NHibernate (II) – Proceso de desarrollo ,[object Object],[object Object],[object Object],[object Object],[object Object]
NH - Pasos 1 y 2 Clases del Dominio (objs. de negocio) Tablas para persistir objetos
NH – Paso 3 <?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; ?>  <hibernate-mapping xmlns=&quot;urn:nhibernate-mapping-2.0&quot; default-access=&quot;property&quot;> <class name=&quot;TPVBO.Venta, TPVBO&quot; table=&quot;Venta&quot; > <id name=&quot;VentaID&quot; column=&quot;idVenta&quot; unsaved-value=&quot;0&quot;> <generator class=&quot;identity&quot; />  </id> <property name=&quot;Fecha&quot; type = &quot;DateTime&quot; /> <property name=&quot;Numero&quot; type = &quot;Int32&quot; /> <bag name=&quot;LineaVenta&quot; cascade=&quot;all&quot;> <key column=&quot;venta&quot;/> <one-to-many class=&quot;TPVBO.LineaVenta, TPVBO&quot;/> </bag> </class> </hibernate-mapping> ............... <class name=&quot;TPVBO.LineaVenta, TPVBO&quot; table=&quot;lineaventa&quot; > <id name=&quot;LineaVentaID&quot; column=“idLineaVta&quot; unsaved-value=&quot;0&quot;> <generator class=&quot;identity&quot; />  </id> <property name=&quot;Cantidad&quot; type = &quot;Int32&quot; /> <many-to-one name=“Producto&quot; class=&quot;TPVBO.Producto, TPVBO&quot; column=&quot;producto&quot; /> </class> </hibernate-mapping>
NH – Paso 4 <?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; ?> <configuration> <configSections> <section name=&quot;nhibernate&quot;  type=&quot;System.Configuration.NameValueSectionHandler, System,  Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089&quot;  /> </configSections> <nhibernate> <add key=&quot;hibernate.connection.provider&quot;  value=&quot;NHibernate.Connection.DriverConnectionProvider&quot;  /> <add key=&quot;hibernate.dialect&quot;  value=&quot;NHibernate.Dialect.MySQLDialect&quot;  /> <add key=&quot;hibernate.connection.driver_class&quot;  value=&quot;NHibernate.Driver.MySqlDataDriver&quot;  /> <add key=&quot;hibernate.connection.connection_string&quot;  value=&quot;Server=localhost;Database=TpvHibernate;User ID=jorge;Password=jorge&quot;  /> </nhibernate> </configuration> Generalmente en el  app.config  de la aplicación
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&quot;);   //  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();
NH – El objeto Session ,[object Object],[object Object],[object Object]
NH – Session (II) Con una session abierta     ISession session = factory.OpenSession(); ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
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();
NH – manejo de transacciones try {  session = factory.OpenSession(); transaction = session.BeginTransaction(); session.SaveOrUpdate(miObjetoNegocio); transaction.Commit(); } catch (Exception ex) {  transaction.Rollback(); } finally {  session.Close();  }
BREAK  30 minutos
Desarrollemos software en capas ConferenciaWeb Requisitos funcionales: ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
ConferenciaWeb – Casos de Uso
ConferenciaWeb – Objetos de Negocio
ConferenciaWeb – Componentes
ConferenciaWeb – Componentes II
ConferenciaWeb Presentación llama Negocio
Negocio llama Acceso a Datos
[object Object],ConferenciaWeb Jorge Ercoli  (http://metodologiasdesistemas.blogspot.com)
Nuevo requerimiento ,[object Object],[object Object],[object Object]
Que más deberíamos ver ? ,[object Object],[object Object],[object Object]
Recursos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Recursos II (sites) ,[object Object],[object Object],[object Object],[object Object],[object Object],Jorge Ercoli  (http://metodologiasdesistemas.blogspot.com)

Weitere ähnliche Inhalte

Was ist angesagt?

Arquitectura de sistemas
Arquitectura de sistemasArquitectura de sistemas
Arquitectura de sistemasTensor
 
Arquitectura de cliente-servidor de tres capas
Arquitectura de cliente-servidor de tres capasArquitectura de cliente-servidor de tres capas
Arquitectura de cliente-servidor de tres capasanibalsmit
 
Arquitectura tres capas, NET
Arquitectura tres capas, NETArquitectura tres capas, NET
Arquitectura tres capas, NETUAE
 
Programación I 2. Arquitectura de Capas
Programación I 2. Arquitectura de CapasProgramación I 2. Arquitectura de Capas
Programación I 2. Arquitectura de CapasEdward Ropero
 
Arquitectura multicapa
Arquitectura multicapaArquitectura multicapa
Arquitectura multicapaHugo Herrera
 
1.2 arquitectura en 2 capas
1.2 arquitectura en 2 capas1.2 arquitectura en 2 capas
1.2 arquitectura en 2 capasEsbeyiz
 
cliente servidor de 3 niveles
cliente servidor de 3 nivelescliente servidor de 3 niveles
cliente servidor de 3 nivelesLupitha Mendoza
 
Aplicaciones Distribuidas
Aplicaciones DistribuidasAplicaciones Distribuidas
Aplicaciones DistribuidasSorey García
 
03b arquitectura clienteservidor n capas
03b arquitectura clienteservidor n capas03b arquitectura clienteservidor n capas
03b arquitectura clienteservidor n capasWalter Moo Guzmán
 
3 capas
3 capas3 capas
3 capasUACH
 
A charla12 arq.3-capas
A charla12 arq.3-capasA charla12 arq.3-capas
A charla12 arq.3-capashome
 
Programación de Base de Datos - Unidad II: Aplicaciones con Arquitectura Clie...
Programación de Base de Datos - Unidad II: Aplicaciones con Arquitectura Clie...Programación de Base de Datos - Unidad II: Aplicaciones con Arquitectura Clie...
Programación de Base de Datos - Unidad II: Aplicaciones con Arquitectura Clie...José Antonio Sandoval Acosta
 
Cliente servidor1
Cliente servidor1Cliente servidor1
Cliente servidor1Sara Amores
 
Materia Cliente/Servidor
Materia Cliente/ServidorMateria Cliente/Servidor
Materia Cliente/Servidorguest1675627
 
Arquitectura Multinivel
Arquitectura MultinivelArquitectura Multinivel
Arquitectura Multinivelurumisama
 

Was ist angesagt? (20)

Programación por Capas en PHP
Programación por Capas en PHPProgramación por Capas en PHP
Programación por Capas en PHP
 
Arquitectura de sistemas
Arquitectura de sistemasArquitectura de sistemas
Arquitectura de sistemas
 
Arquitectura de cliente-servidor de tres capas
Arquitectura de cliente-servidor de tres capasArquitectura de cliente-servidor de tres capas
Arquitectura de cliente-servidor de tres capas
 
Proyecto multicapa y conexión
Proyecto multicapa y conexiónProyecto multicapa y conexión
Proyecto multicapa y conexión
 
Arquitectura tres capas, NET
Arquitectura tres capas, NETArquitectura tres capas, NET
Arquitectura tres capas, NET
 
Arquitectura multicapa
Arquitectura multicapaArquitectura multicapa
Arquitectura multicapa
 
Programación I 2. Arquitectura de Capas
Programación I 2. Arquitectura de CapasProgramación I 2. Arquitectura de Capas
Programación I 2. Arquitectura de Capas
 
Arquitectura en capas
Arquitectura en capasArquitectura en capas
Arquitectura en capas
 
Arquitectura multicapa
Arquitectura multicapaArquitectura multicapa
Arquitectura multicapa
 
1.2 arquitectura en 2 capas
1.2 arquitectura en 2 capas1.2 arquitectura en 2 capas
1.2 arquitectura en 2 capas
 
cliente servidor de 3 niveles
cliente servidor de 3 nivelescliente servidor de 3 niveles
cliente servidor de 3 niveles
 
Aplicaciones Distribuidas
Aplicaciones DistribuidasAplicaciones Distribuidas
Aplicaciones Distribuidas
 
03b arquitectura clienteservidor n capas
03b arquitectura clienteservidor n capas03b arquitectura clienteservidor n capas
03b arquitectura clienteservidor n capas
 
3 capas
3 capas3 capas
3 capas
 
A charla12 arq.3-capas
A charla12 arq.3-capasA charla12 arq.3-capas
A charla12 arq.3-capas
 
Programación de Base de Datos - Unidad II: Aplicaciones con Arquitectura Clie...
Programación de Base de Datos - Unidad II: Aplicaciones con Arquitectura Clie...Programación de Base de Datos - Unidad II: Aplicaciones con Arquitectura Clie...
Programación de Base de Datos - Unidad II: Aplicaciones con Arquitectura Clie...
 
Aplicaciones En Capas
Aplicaciones En CapasAplicaciones En Capas
Aplicaciones En Capas
 
Cliente servidor1
Cliente servidor1Cliente servidor1
Cliente servidor1
 
Materia Cliente/Servidor
Materia Cliente/ServidorMateria Cliente/Servidor
Materia Cliente/Servidor
 
Arquitectura Multinivel
Arquitectura MultinivelArquitectura Multinivel
Arquitectura Multinivel
 

Andere mochten auch

Primera Presentacion De Desarrollo Local
Primera Presentacion De Desarrollo LocalPrimera Presentacion De Desarrollo Local
Primera Presentacion De Desarrollo Localguest4df7710
 
Desarrollo psicomotor.
Desarrollo psicomotor.Desarrollo psicomotor.
Desarrollo psicomotor.Junior Jami
 
Evaluación del desarrollo psicomotor: Test Peruano del Desarrollo del Niño (0...
Evaluación del desarrollo psicomotor: Test Peruano del Desarrollo del Niño (0...Evaluación del desarrollo psicomotor: Test Peruano del Desarrollo del Niño (0...
Evaluación del desarrollo psicomotor: Test Peruano del Desarrollo del Niño (0...Alien
 
UTPL-MÓDULO I DESARROLLO LOCAL Y SALUD-I-BIMESTRE-(NOVIEMBRE 2011-MAYO 2012)
UTPL-MÓDULO I DESARROLLO LOCAL Y SALUD-I-BIMESTRE-(NOVIEMBRE 2011-MAYO 2012)UTPL-MÓDULO I DESARROLLO LOCAL Y SALUD-I-BIMESTRE-(NOVIEMBRE 2011-MAYO 2012)
UTPL-MÓDULO I DESARROLLO LOCAL Y SALUD-I-BIMESTRE-(NOVIEMBRE 2011-MAYO 2012)Videoconferencias UTPL
 
Atencion inmediata del recien nacido
Atencion inmediata del recien nacidoAtencion inmediata del recien nacido
Atencion inmediata del recien nacidoLaura Olivos Peramas
 
Nuevos Enfoques Desarrollo Local
Nuevos Enfoques Desarrollo  LocalNuevos Enfoques Desarrollo  Local
Nuevos Enfoques Desarrollo LocalComprandoJuntos.CL
 
Arquitectura N-Capas y ADo.NET
Arquitectura N-Capas y ADo.NETArquitectura N-Capas y ADo.NET
Arquitectura N-Capas y ADo.NETRoberto Taborda
 
Guía de observación en el Jardín de niños “Vicente Chicosein”
Guía de observación en el Jardín de niños “Vicente Chicosein”Guía de observación en el Jardín de niños “Vicente Chicosein”
Guía de observación en el Jardín de niños “Vicente Chicosein”marizalopezfraga
 
Desarrollo cognositivo del niño de 1 a 2 años
Desarrollo cognositivo del niño de 1 a 2 añosDesarrollo cognositivo del niño de 1 a 2 años
Desarrollo cognositivo del niño de 1 a 2 añosBerenice Rojas
 
Arquitectura de software
Arquitectura de softwareArquitectura de software
Arquitectura de softwareLiliana Pacheco
 
Desarrollo fisico y psicomotriz
Desarrollo fisico y psicomotrizDesarrollo fisico y psicomotriz
Desarrollo fisico y psicomotrizAsahel Arroyo
 

Andere mochten auch (20)

Primera Presentacion De Desarrollo Local
Primera Presentacion De Desarrollo LocalPrimera Presentacion De Desarrollo Local
Primera Presentacion De Desarrollo Local
 
Desarrollo psicomotor.
Desarrollo psicomotor.Desarrollo psicomotor.
Desarrollo psicomotor.
 
Evaluación del desarrollo psicomotor: Test Peruano del Desarrollo del Niño (0...
Evaluación del desarrollo psicomotor: Test Peruano del Desarrollo del Niño (0...Evaluación del desarrollo psicomotor: Test Peruano del Desarrollo del Niño (0...
Evaluación del desarrollo psicomotor: Test Peruano del Desarrollo del Niño (0...
 
UTPL-MÓDULO I DESARROLLO LOCAL Y SALUD-I-BIMESTRE-(NOVIEMBRE 2011-MAYO 2012)
UTPL-MÓDULO I DESARROLLO LOCAL Y SALUD-I-BIMESTRE-(NOVIEMBRE 2011-MAYO 2012)UTPL-MÓDULO I DESARROLLO LOCAL Y SALUD-I-BIMESTRE-(NOVIEMBRE 2011-MAYO 2012)
UTPL-MÓDULO I DESARROLLO LOCAL Y SALUD-I-BIMESTRE-(NOVIEMBRE 2011-MAYO 2012)
 
Desarrollo local y regional tendencias
Desarrollo local y regional tendenciasDesarrollo local y regional tendencias
Desarrollo local y regional tendencias
 
Desarrollo Local Como Proceso
Desarrollo Local Como ProcesoDesarrollo Local Como Proceso
Desarrollo Local Como Proceso
 
Atencion inmediata del recien nacido
Atencion inmediata del recien nacidoAtencion inmediata del recien nacido
Atencion inmediata del recien nacido
 
Macroangiopatia diabetica
Macroangiopatia diabeticaMacroangiopatia diabetica
Macroangiopatia diabetica
 
Nuevos Enfoques Desarrollo Local
Nuevos Enfoques Desarrollo  LocalNuevos Enfoques Desarrollo  Local
Nuevos Enfoques Desarrollo Local
 
Arquitectura N-Capas y ADo.NET
Arquitectura N-Capas y ADo.NETArquitectura N-Capas y ADo.NET
Arquitectura N-Capas y ADo.NET
 
Arquitectura
ArquitecturaArquitectura
Arquitectura
 
Guía de observación en el Jardín de niños “Vicente Chicosein”
Guía de observación en el Jardín de niños “Vicente Chicosein”Guía de observación en el Jardín de niños “Vicente Chicosein”
Guía de observación en el Jardín de niños “Vicente Chicosein”
 
Proyecto Desarrollo Local Endogeno Productivo 2010 Final 6 Sept Con Autores
Proyecto Desarrollo Local Endogeno Productivo 2010 Final 6 Sept Con AutoresProyecto Desarrollo Local Endogeno Productivo 2010 Final 6 Sept Con Autores
Proyecto Desarrollo Local Endogeno Productivo 2010 Final 6 Sept Con Autores
 
Desarrollo cognositivo del niño de 1 a 2 años
Desarrollo cognositivo del niño de 1 a 2 añosDesarrollo cognositivo del niño de 1 a 2 años
Desarrollo cognositivo del niño de 1 a 2 años
 
Arquitectura de software
Arquitectura de softwareArquitectura de software
Arquitectura de software
 
Desarrollo Local
Desarrollo LocalDesarrollo Local
Desarrollo Local
 
Desarrollo fisico y psicomotriz
Desarrollo fisico y psicomotrizDesarrollo fisico y psicomotriz
Desarrollo fisico y psicomotriz
 
Desarrollo psicomotriz en la pubertad y adolescencia
Desarrollo psicomotriz en la pubertad y adolescenciaDesarrollo psicomotriz en la pubertad y adolescencia
Desarrollo psicomotriz en la pubertad y adolescencia
 
Desarrollo Motriz en la Adolescencia
Desarrollo Motriz en la AdolescenciaDesarrollo Motriz en la Adolescencia
Desarrollo Motriz en la Adolescencia
 
DESARROLLO PSICOMOTRIZ EN LA VEJEZ
DESARROLLO PSICOMOTRIZ EN LA VEJEZDESARROLLO PSICOMOTRIZ EN LA VEJEZ
DESARROLLO PSICOMOTRIZ EN LA VEJEZ
 

Ähnlich wie Desarrollo en Capas con NHibernate

EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptxEFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptxLuis Fernando Aguas Bucheli
 
Persistencia de un modelo de objetos
Persistencia de un modelo de objetosPersistencia de un modelo de objetos
Persistencia de un modelo de objetosJorge Ercoli
 
Kumbia PHP Framework - Inicios, Presente y Futuro
Kumbia PHP Framework - Inicios, Presente y FuturoKumbia PHP Framework - Inicios, Presente y Futuro
Kumbia PHP Framework - Inicios, Presente y FuturoDeivinson Tejeda
 
Efc programación .net-luis fernando aguas - 22012022 1700
Efc programación .net-luis fernando aguas - 22012022 1700Efc programación .net-luis fernando aguas - 22012022 1700
Efc programación .net-luis fernando aguas - 22012022 1700Luis Fernando Aguas Bucheli
 
How To Split The Monolith - From monolith to microservices
How To Split The Monolith - From monolith to microservicesHow To Split The Monolith - From monolith to microservices
How To Split The Monolith - From monolith to microservicesOliver Fierro
 
CvTrafficCounter Video
CvTrafficCounter VideoCvTrafficCounter Video
CvTrafficCounter VideoPaul Arévalo
 
SQLSaturday 346 El Salvador 2015 Cubes Performance
SQLSaturday 346 El Salvador 2015 Cubes PerformanceSQLSaturday 346 El Salvador 2015 Cubes Performance
SQLSaturday 346 El Salvador 2015 Cubes PerformanceMarco Tulio Gómez Reyes
 
Comunidad emagister 63082_63082-convertido
Comunidad emagister 63082_63082-convertidoComunidad emagister 63082_63082-convertido
Comunidad emagister 63082_63082-convertidoJamil Cajamarca
 
Sgbd roberto escriche marcelo hualoto
Sgbd roberto escriche marcelo hualotoSgbd roberto escriche marcelo hualoto
Sgbd roberto escriche marcelo hualotoKenny24
 
Sistemas distribuidos2
Sistemas distribuidos2Sistemas distribuidos2
Sistemas distribuidos2Holger Sanchez
 
Servicios de datos en la nube
Servicios de datos en la nubeServicios de datos en la nube
Servicios de datos en la nubeJuan Pablo
 
Programación en capass
Programación en capassProgramación en capass
Programación en capassPatricia Reyna
 
Enterprise manager 11g
Enterprise manager  11gEnterprise manager  11g
Enterprise manager 11gEddy Solano
 

Ähnlich wie Desarrollo en Capas con NHibernate (20)

EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptxEFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
 
Persistencia de un modelo de objetos
Persistencia de un modelo de objetosPersistencia de un modelo de objetos
Persistencia de un modelo de objetos
 
Kumbia PHP Framework - Inicios, Presente y Futuro
Kumbia PHP Framework - Inicios, Presente y FuturoKumbia PHP Framework - Inicios, Presente y Futuro
Kumbia PHP Framework - Inicios, Presente y Futuro
 
Efc programación .net-luis fernando aguas - 22012022 1700
Efc programación .net-luis fernando aguas - 22012022 1700Efc programación .net-luis fernando aguas - 22012022 1700
Efc programación .net-luis fernando aguas - 22012022 1700
 
How To Split The Monolith - From monolith to microservices
How To Split The Monolith - From monolith to microservicesHow To Split The Monolith - From monolith to microservices
How To Split The Monolith - From monolith to microservices
 
1127082.ppt
1127082.ppt1127082.ppt
1127082.ppt
 
CvTrafficCounter Video
CvTrafficCounter VideoCvTrafficCounter Video
CvTrafficCounter Video
 
Cliente/Servidor
Cliente/ServidorCliente/Servidor
Cliente/Servidor
 
SQLSaturday 346 El Salvador 2015 Cubes Performance
SQLSaturday 346 El Salvador 2015 Cubes PerformanceSQLSaturday 346 El Salvador 2015 Cubes Performance
SQLSaturday 346 El Salvador 2015 Cubes Performance
 
S4-PD1-2.2 EF
S4-PD1-2.2 EFS4-PD1-2.2 EF
S4-PD1-2.2 EF
 
Comunidad emagister 63082_63082-convertido
Comunidad emagister 63082_63082-convertidoComunidad emagister 63082_63082-convertido
Comunidad emagister 63082_63082-convertido
 
Sgbd roberto escriche marcelo hualoto
Sgbd roberto escriche marcelo hualotoSgbd roberto escriche marcelo hualoto
Sgbd roberto escriche marcelo hualoto
 
Postgresql expo
Postgresql expoPostgresql expo
Postgresql expo
 
Sistemas distribuidos2
Sistemas distribuidos2Sistemas distribuidos2
Sistemas distribuidos2
 
Servicios de datos en la nube
Servicios de datos en la nubeServicios de datos en la nube
Servicios de datos en la nube
 
Ingenieria sistemas
Ingenieria sistemasIngenieria sistemas
Ingenieria sistemas
 
Programación en capass
Programación en capassProgramación en capass
Programación en capass
 
5-Unidad 2: Diseño de Vista-2.2 Para Web
5-Unidad 2: Diseño de Vista-2.2 Para Web5-Unidad 2: Diseño de Vista-2.2 Para Web
5-Unidad 2: Diseño de Vista-2.2 Para Web
 
Enterprise manager 11g
Enterprise manager  11gEnterprise manager  11g
Enterprise manager 11g
 
Cubos ppt
Cubos pptCubos ppt
Cubos ppt
 

Kürzlich hochgeladen

KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofJuancarlosHuertasNio1
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersIván López Martín
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...JaquelineJuarez15
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...AlanCedillo9
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 

Kürzlich hochgeladen (20)

KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sof
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 

Desarrollo en Capas con NHibernate

  • 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
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 21.
  • 23. Ejemplo de ORM: NHibernate Arquitectura
  • 24.
  • 25. NH - Pasos 1 y 2 Clases del Dominio (objs. de negocio) Tablas para persistir objetos
  • 26. NH – Paso 3 <?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; ?> <hibernate-mapping xmlns=&quot;urn:nhibernate-mapping-2.0&quot; default-access=&quot;property&quot;> <class name=&quot;TPVBO.Venta, TPVBO&quot; table=&quot;Venta&quot; > <id name=&quot;VentaID&quot; column=&quot;idVenta&quot; unsaved-value=&quot;0&quot;> <generator class=&quot;identity&quot; /> </id> <property name=&quot;Fecha&quot; type = &quot;DateTime&quot; /> <property name=&quot;Numero&quot; type = &quot;Int32&quot; /> <bag name=&quot;LineaVenta&quot; cascade=&quot;all&quot;> <key column=&quot;venta&quot;/> <one-to-many class=&quot;TPVBO.LineaVenta, TPVBO&quot;/> </bag> </class> </hibernate-mapping> ............... <class name=&quot;TPVBO.LineaVenta, TPVBO&quot; table=&quot;lineaventa&quot; > <id name=&quot;LineaVentaID&quot; column=“idLineaVta&quot; unsaved-value=&quot;0&quot;> <generator class=&quot;identity&quot; /> </id> <property name=&quot;Cantidad&quot; type = &quot;Int32&quot; /> <many-to-one name=“Producto&quot; class=&quot;TPVBO.Producto, TPVBO&quot; column=&quot;producto&quot; /> </class> </hibernate-mapping>
  • 27. NH – Paso 4 <?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; ?> <configuration> <configSections> <section name=&quot;nhibernate&quot; type=&quot;System.Configuration.NameValueSectionHandler, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089&quot; /> </configSections> <nhibernate> <add key=&quot;hibernate.connection.provider&quot; value=&quot;NHibernate.Connection.DriverConnectionProvider&quot; /> <add key=&quot;hibernate.dialect&quot; value=&quot;NHibernate.Dialect.MySQLDialect&quot; /> <add key=&quot;hibernate.connection.driver_class&quot; value=&quot;NHibernate.Driver.MySqlDataDriver&quot; /> <add key=&quot;hibernate.connection.connection_string&quot; value=&quot;Server=localhost;Database=TpvHibernate;User ID=jorge;Password=jorge&quot; /> </nhibernate> </configuration> Generalmente en el app.config de la aplicación
  • 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&quot;); // 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();
  • 32. NH – manejo de transacciones try { session = factory.OpenSession(); transaction = session.BeginTransaction(); session.SaveOrUpdate(miObjetoNegocio); transaction.Commit(); } catch (Exception ex) { transaction.Rollback(); } finally { session.Close(); }
  • 33. BREAK 30 minutos
  • 34.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.