Capa de Persistencia

14
www.dflanvin.com /docencia/arquitectura Daniel Fernández Lanvin Capa de Persistencia

description

Capa de Persistencia. Capa de Persistencia Responsabilidades. Ofrece servicios de persistencia y recuperación de información a las capas superiores: Servicios de lógica de persistencia Ej. “insertar cliente”, “insertar factura”, etc. Independiente de la capa de negocio. Posibles Alternativas. - PowerPoint PPT Presentation

Transcript of Capa de Persistencia

Page 1: Capa de Persistencia

www.dflanvin.com/docencia/arquitectura

Daniel Fernández Lanvin

Capa dePersistencia

Page 2: Capa de Persistencia

www.dflanvin.com/docencia/arquitectura

Daniel Fernández Lanvin

Capa de PersistenciaResponsabilidades

Ofrece servicios de persistencia y recuperación de información a las capas superiores: Servicios de lógica de persistencia Ej. “insertar cliente”, “insertar factura”, etc.

Independiente de la capa de negocio.

Page 3: Capa de Persistencia

www.dflanvin.com/docencia/arquitectura

Daniel Fernández Lanvin

PosiblesAlternativas

Capa de EJBs de entidad BMPs CMPs

Beans normales de acceso a datos Framework de persistencia mapeo O/R Conjunto de conectores a otros sistemas Back

Ej. JCO o Business Connector para el acceso a SAP y BIW.

Integración con sistemas LEGACY Soluciones Híbridas de las anteriores.

Page 4: Capa de Persistencia

www.dflanvin.com/docencia/arquitectura

Daniel Fernández Lanvin

Capa de persistenciaEJBs de Entidad CMP

Container Managed Persistence El programador no se preocupa de las SQLs

NEGOCIO

ACCESO ADATOS

MySQL

EEJBCMP EEJBCMP EEJBCMP EEJBCMP

HELPER HELPER HELPERHELPER

Page 5: Capa de Persistencia

www.dflanvin.com/docencia/arquitectura

Daniel Fernández Lanvin

Capa de persistenciaEJBs de Entidad BMP

NEGOCIO

ACCESO ADATOS

MySQL

EEJBBMP EEJBBMP EEJBBMP EEJBBMP

HELPER HELPER HELPERHELPER

SQLProvider

Statements.xml

Bean Managed Persistence El programador debe desarrollar las SQLs

Page 6: Capa de Persistencia

www.dflanvin.com/docencia/arquitectura

Daniel Fernández Lanvin

Capa de persistenciaBeans Acceso a Datos

Beans java que ejecutan sentencias SQL contra el motor de persistencia

NEGOCIO

ACCESO ADATOS

MySQL

Session EJB SSL

HELPER HELPER HELPERHELPER

SQLProvider

Statements.xml

DBBeanDBBean DBBean DBBean

DTO DTODTODTO

Session EJB SSL

Session EJB SSL

Session EJB SSL

Page 7: Capa de Persistencia

www.dflanvin.com/docencia/arquitectura

Daniel Fernández Lanvin

Capa de persistenciaFramework de Persistencia

Herramientas de Mapeo Objeto/Relacional Pueden estar basadas, entre otras cosas, en

EJBs de entidad Fama de bajo rendimiento Desarrollo rápido de aplicaciones Aplicaciones portables a otras bases de datos,

siempre y cuando sean contempladas por el framework aplicado.

Ej: Hibernate Framework

Page 8: Capa de Persistencia

www.dflanvin.com/docencia/arquitectura

Daniel Fernández Lanvin

Pool deConexiones Técnica destinada a gestionar y reutilizar objetos. Crear objetos Connection es una de las operaciones más

caras -> Abrir y cerrar conexión por cada consulta es muy costoso.

Gestión adecuada de las conexiones de la base de datos Un solo usuario de base de datos para todos los usuarios

de la aplicación web -> una sola licencia. Funcionamiento pool conexiones estándar:

1. El cliente obtiene una referencia al pool2. Obtiene del pool una conexión abierta3. Ejecuta la sentencia SQL4. Devuelve la conexión al pool para que sea reutilizada sin

ser cerrada Los Pools de conexiones NO SON SOLO PARA BBDD. Ej:

Pool JCO de SAP

Page 9: Capa de Persistencia

www.dflanvin.com/docencia/arquitectura

Daniel Fernández Lanvin

Piloto conPool de Conexiones

Trabajo 11.0. Pasos: Dar de alta el pool de conexiones en TOMCAT

Server.xml Modificar las clases de acceso a datos

(xxxDataBean) para que recuperen la conexión del pool en lugar de abrirla y cerrarla

Context ctx = new InitialContext(); if(ctx == null ) throw new Exception("Boom - No Context");

DataSource ds = (DataSource)ctx.lookup(

"java:comp/env/jdbc/AmazinDB");

if (ds != null) con = ds.getConnection();

Page 10: Capa de Persistencia

www.dflanvin.com/docencia/arquitectura

Daniel Fernández Lanvin

Externalización de SQLs

SQL estándar? No existe. Lo más parecido, SQL 92 Cada proveedor ha personalizado el SQL a su propia

base de datos Sentencias básicas son iguales Sentencias optimizadas NO

Consecuencia: Las SQLs limitan la portabilidad del sistema.

Solución: Externalizarlas a un fichero XML. Se limita el impacto de una posible migración de base de

datos a tareas de configuración Permite hacer tunning mediante creación de índices,

alteración del modelo, etc. sin necesidad de desarrollar. No siempre es posible (generación dinámica de SQLs).

Page 11: Capa de Persistencia

www.dflanvin.com/docencia/arquitectura

Daniel Fernández Lanvin

SQLProviderProveedor de SQLs

Piloto Trabajo 12.0 Instancia del patrón Singleton

Nos garantiza que sólo se instancia una vez Lee una sóla vez las sentencias SQL del

fichero y las mantiene en memoria. Se recarga a cada arranque del sistema Permite modificar las SQLs sin necesidad de

Programar Recompilar Repaquetizar Redesplegar

Page 12: Capa de Persistencia

www.dflanvin.com/docencia/arquitectura

Daniel Fernández Lanvin

Piloto conSQLProvider

Piloto Trabajo 12.0. Pasos: Crear SQLProvider.java Crear sentencias.xml y colocarlo en el classpath<?xml version="1.0" encoding="UTF-8"?>

<jenial-sql-statements>

<sql>

<id>libro.selectAll</id>

<statement>select * from libro</statement>

</sql>

</jenial-sql-statements

Modificar la recuperación de la sentencia SQLps=con.prepareStatement(

SQLProvider.getInstance().getSentence(SQL_ID));

Page 13: Capa de Persistencia

www.dflanvin.com/docencia/arquitectura

Daniel Fernández Lanvin

WorkShop!Adaptar el servicio de persistencia IVA

Sobre la versión del piloto 12.0, modificar IvaDataBean para que: Obtenga la conexión del pool de

conexiones en lugar de crearla y destruirla en cada operación de base de datos.

Obtenga la SQL del SQLProvider en lugar de tenerla hardcodeada como una constante dentro de la clase.

Page 14: Capa de Persistencia

www.dflanvin.com/docencia/arquitectura

Daniel Fernández Lanvin

Referencias

URLs http://jakarta.apache.org/Struts http://theserverside.com

Libros Mastering Tomcat Development de WILEY Java Server Programming J2EE Edition de Wrox