Download 16. Capa de Persistencia

Document related concepts
no text concepts found
Transcript
Capa de
Persistencia
Daniel Fernández Lanvin
www.dflanvin.com/docencia/arquitectura
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
www.dflanvin.com/docencia/arquitectura
Posibles
Alternativas

Capa de EJBs de entidad





Beans normales de acceso a datos
Framework de persistencia mapeo O/R
Conjunto de conectores a otros sistemas Back



BMPs
CMPs
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
www.dflanvin.com/docencia/arquitectura
Capa de persistencia
EJBs de Entidad CMP

Container Managed Persistence

El programador no se preocupa de las SQLs
NEGOCIO
HELPER
HELPER
HELPER
HELPER
EEJBCMP
EEJBCMP
EEJBCMP
EEJBCMP
ACCESO A
DATOS
MySQL
Daniel Fernández Lanvin
www.dflanvin.com/docencia/arquitectura
Capa de persistencia
EJBs de Entidad BMP

Bean Managed Persistence

El programador debe desarrollar las SQLs
NEGOCIO
HELPER
HELPER
HELPER
HELPER
EEJBBMP
EEJBBMP
EEJBBMP
EEJBBMP
ACCESO A
DATOS
SQLProvider
MySQL
Daniel Fernández Lanvin
Statements.xml
www.dflanvin.com/docencia/arquitectura
Capa de persistencia
Beans Acceso a Datos

Beans java que ejecutan sentencias SQL contra el
motor de persistencia
NEGOCIO
HELPER
DTO
HELPER
DTO
Session
EJB SSL
DBBean
HELPER
DTO
HELPER
DTO
Session
EJB SSL
Session
EJB SSL
DBBean
DBBean
Session
EJB SSL
ACCESO A
DATOS
DBBean
SQLProvider
MySQL
Daniel Fernández Lanvin
Statements.xml
www.dflanvin.com/docencia/arquitectura
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
www.dflanvin.com/docencia/arquitectura
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
2. Obtiene del pool una conexión abierta
3. Ejecuta la sentencia SQL
4. Devuelve la conexión al pool para que sea reutilizada sin ser
cerrada
1.

Los Pools de conexiones NO SON SOLO PARA BBDD. Ej: Pool
JCO de SAP
Daniel Fernández Lanvin
www.dflanvin.com/docencia/arquitectura
Piloto con
Pool 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();
Daniel Fernández Lanvin
www.dflanvin.com/docencia/arquitectura
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
www.dflanvin.com/docencia/arquitectura
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
www.dflanvin.com/docencia/arquitectura
Piloto con
SQLProvider

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 SQL
ps=con.prepareStatement(
SQLProvider.getInstance().getSentence(SQL_ID));
Daniel Fernández Lanvin
www.dflanvin.com/docencia/arquitectura
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
www.dflanvin.com/docencia/arquitectura
Referencias
URLs



http://jakarta.apache.org/Struts
http://theserverside.com
Libros



Mastering Tomcat Development de WILEY
Java Server Programming J2EE Edition de Wrox
Daniel Fernández Lanvin
www.dflanvin.com/docencia/arquitectura