La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Capa de Persistencia Daniel Fernández Lanvin.

Presentaciones similares


Presentación del tema: "Capa de Persistencia Daniel Fernández Lanvin."— Transcripción de la presentación:

1 Capa de Persistencia Daniel Fernández Lanvin

2 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. Daniel Fernández Lanvin

3 Posibles Alternativas
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. Daniel Fernández Lanvin

4 Capa de persistencia EJBs de Entidad CMP
Container Managed Persistence El programador no se preocupa de las SQLs NEGOCIO ACCESO A DATOS MySQL EEJBCMP HELPER Daniel Fernández Lanvin

5 Capa de persistencia EJBs de Entidad BMP
Bean Managed Persistence El programador debe desarrollar las SQLs NEGOCIO ACCESO A DATOS MySQL EEJBBMP HELPER SQLProvider Statements.xml Daniel Fernández Lanvin

6 Capa de persistencia Beans Acceso a Datos
Beans java que ejecutan sentencias SQL contra el motor de persistencia NEGOCIO ACCESO A DATOS MySQL Session EJB SSL HELPER SQLProvider Statements.xml DBBean DTO Daniel Fernández Lanvin

7 Capa de persistencia Framework 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 Daniel Fernández Lanvin

8 Pool de Conexiones 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: El cliente obtiene una referencia al pool Obtiene del pool una conexión abierta Ejecuta la sentencia SQL 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 Daniel Fernández Lanvin

9 Piloto con Pool de Conexiones
Trabajo 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(); Daniel Fernández Lanvin

10 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). Daniel Fernández Lanvin

11 SQLProvider Proveedor 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 Daniel Fernández Lanvin

12 Piloto con SQLProvider
Piloto Trabajo 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 SQL ps=con.prepareStatement( SQLProvider.getInstance().getSentence(SQL_ID)); Daniel Fernández Lanvin

13 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. Daniel Fernández Lanvin

14 Referencias URLs Libros http://jakarta.apache.org/Struts
Libros Mastering Tomcat Development de WILEY Java Server Programming J2EE Edition de Wrox Daniel Fernández Lanvin


Descargar ppt "Capa de Persistencia Daniel Fernández Lanvin."

Presentaciones similares


Anuncios Google