Está en la página 1de 7

1

Daniel Fernandez Lanvin


Arquitectura Web en Aplicaciones
Empresariales JavafJ2EE www.dflanvin.comfdocenciafarquitectura
Capa de
Persistencia
Daniel Fernandez Lanvin
Arquitectura Web en Aplicaciones
Empresariales JavafJ2EE www.dflanvin.comfdocenciafarquitectura
Capa de Persistencia
Responsabilidades
Ofrece servicios de persistencia y
recuperacin de informacin a las capas
superiores: Servicios de lgica de persistencia
Ej. insertar cliente", insertar factura", etc.
!ndependiente de la capa de negocio.
2
Daniel Fernandez Lanvin
Arquitectura Web en Aplicaciones
Empresariales JavafJ2EE www.dflanvin.comfdocenciafarquitectura
Posibles
Alternativas
Capa de EJBs de entidad
BNPs
CNPs
Beans normales de acceso a datos
Framework de persistencia mapeo OfR
Conjunto de conectores a otros sistemas Back
Ej. JCO o Business Connector para el acceso a SAP y B!W.
!ntegracin con sistemas LEGACY
Soluciones Hibridas de las anteriores.
Daniel Fernandez Lanvin
Arquitectura Web en Aplicaciones
Empresariales JavafJ2EE www.dflanvin.comfdocenciafarquitectura
Capa de persistencia
EJBs de Entidad CNP
Container Nanaged Persistence
El programador no se preocupa de las SQLs
NLGOClO
ACCL5O A
DA1O5
MySQL
EEJBCMP EEJBCMP EEJBCMP EEJBCMP
HELPER HELPER HELPER HELPER
3
Daniel Fernandez Lanvin
Arquitectura Web en Aplicaciones
Empresariales JavafJ2EE www.dflanvin.comfdocenciafarquitectura
Capa de persistencia
EJBs de Entidad BNP
NLGOClO
ACCL5O A
DA1O5
MySQL
EEJBBMP EEJBBMP EEJBBMP EEJBBMP
HELPER HELPER HELPER HELPER
5qLPov1de 5qLPov1de 5qLPov1de 5qLPov1de
Statements.xml
Bean Nanaged Persistence
El programador debe desarrollar las SQLs
Daniel Fernandez Lanvin
Arquitectura Web en Aplicaciones
Empresariales JavafJ2EE www.dflanvin.comfdocenciafarquitectura
Capa de persistencia
Beans Acceso a Datos
Beans java que ejecutan sentencias SQL contra el
motor de persistencia
NLGOClO
ACCL5O A
DA1O5
MySQL
5ess1on
LJ8 55L
HELPER HELPER HELPER HELPER
5qLPov1de 5qLPov1de 5qLPov1de 5qLPov1de
5fafemenfs.xm1 5fafemenfs.xm1 5fafemenfs.xm1 5fafemenfs.xm1
DBBean DBBean DBBean DBBean
DTO DTO DTO DTO
5ess1on
LJ8 55L
5ess1on
LJ8 55L
5ess1on
LJ8 55L
4
Daniel Fernandez Lanvin
Arquitectura Web en Aplicaciones
Empresariales JavafJ2EE www.dflanvin.comfdocenciafarquitectura
Capa de persistencia
Framework de Persistencia
Herramientas de Napeo ObjetofRelacional
Pueden estar basadas, entre otras cosas, en EJBs de
entidad
Fama de bajo rendimiento
Desarrollo rapido de aplicaciones
Aplicaciones portables a otras bases de datos,
siempre y cuando sean contempladas por el
framework aplicado.
Ej: Hibernate Framework
Daniel Fernandez Lanvin
Arquitectura Web en Aplicaciones
Empresariales JavafJ2EE www.dflanvin.comfdocenciafarquitectura
Pool de
Conexiones
Tcnica destinada a gestionar y reutilizar objetos.
Crear objetos Connection es una de las operaciones mas caras
-> Abrir y cerrar conexin por cada consulta es muy costoso.
Gestin adecuada de las conexiones de la base de datos
Un solo usuario de base de datos para todos los usuarios de la
aplicacin web -> una sola licencia.
Funcionamiento pool conexiones estandar:
1. El cliente obtiene una referencia al pool
2. Obtiene del pool una conexin abierta
3. Ejecuta la sentencia SQL
+. Devuelve la conexin al pool para que sea reutilizada sin ser
cerrada
Los Pools de conexiones NO SON SOLO PARA BBDD. Ej: Pool
JCO de SAP
5
Daniel Fernandez Lanvin
Arquitectura Web en Aplicaciones
Empresariales JavafJ2EE www.dflanvin.comfdocenciafarquitectura
Piloto con
Pool de Conexiones
Trabajo 11.0. Pasos:
Dar de alta el pool de conexiones en TONCAT
Server.xml
Nodificar las clases de acceso a datos (xxxDataBean) para
que recuperen la conexin 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 Fernandez Lanvin
Arquitectura Web en Aplicaciones
Empresariales JavafJ2EE www.dflanvin.comfdocenciafarquitectura
Externalizacin de
SQLs
SQL estandar? No existe. Lo mas parecido, SQL 92
Cada proveedor ha personalizado el SQL a su propia base de
datos
Sentencias basicas son iguales
Sentencias optimizadas NO
Consecuencia: Las SQLs limitan la portabilidad del sistema.
Solucin: Externalizarlas a un fichero XNL.
Se limita el impacto de una posible migracin de base de datos a
tareas de configuracin
Permite hacer tunning mediante creacin de indices, alteracin del
modelo, etc. sin necesidad de desarrollar.
No siempre es posible (generacin dinamica de SQLs).
6
Daniel Fernandez Lanvin
Arquitectura Web en Aplicaciones
Empresariales JavafJ2EE www.dflanvin.comfdocenciafarquitectura
SQLProvider
Proveedor de SQLs
Piloto Trabajo 1?.0
!nstancia del patrn Singleton
Nos garantiza que slo se instancia una vez
Lee una sla 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 Fernandez Lanvin
Arquitectura Web en Aplicaciones
Empresariales JavafJ2EE www.dflanvin.comfdocenciafarquitectura
Piloto con
SQLProvider
Piloto Trabajo 12.0. Pasos:
Crear SQProvider.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
Nodificar la recuperacin de la sentencia SQL
ps=con.prepareStatement(
SQLProvider.getInstance().getSentence(SQL_ID));
7
Daniel Fernandez Lanvin
Arquitectura Web en Aplicaciones
Empresariales JavafJ2EE www.dflanvin.comfdocenciafarquitectura
WorkShop!
Adaptar el servicio de persistencia !vA
Sobre la versin del piloto 12.0, modificar
!vaDataBean para que:
Obtenga la conexin del pool de conexiones en
lugar de crearla y destruirla en cada operacin de
base de datos.
Obtenga la SQL del SQLProvider en lugar de
tenerla hardcodeada como una constante dentro
de la clase.
Daniel Fernandez Lanvin
Arquitectura Web en Aplicaciones
Empresariales JavafJ2EE www.dflanvin.comfdocenciafarquitectura
Referencias
URLs
http:ffjakarta.apache.orgfStruts
http:fftheserverside.com
Libros
Nastering Tomcat Development de W!LEY
Java Server Programming J2EE Edition de Wrox

También podría gustarte