Sie sind auf Seite 1von 21

Arquitectura de aplicaciones

Sistemas de persistencia de
Objetos
Arquitectura en capas
 Las capas se comunican a
travs de interfaces
 Las implementaciones estn
ocultas al exterior
 Una factora da la
implementacin bajo
demanda para cada interfaz
 La capa superior se comunica
con la inferior, no al revs
 Las capas, hechas as, son
intercambiables

nov-08 alb@uniovi.es 2
Capa de presentacin
 Resuelve la interaccin con el usuario
 Mostrar datos, formatearlos, ordenarlos
 Solicitar datos, validarlos
 Incluye algo de lgica (pero de presentacin)
 Informar de los errores lgicos y de ejecucin (errores
internos)
 Algunas reglas de negocio pueden ser
responsabilidad de esta capa
 Presentar estos datos as y los otros as
 Ocultar/deshabilitar determinado dato/control si se da
tal circunstancia

nov-08 alb@uniovi.es 3
Capa de presentacin
 Puede estar dividida en subcapas
 Parte en el servidor (p.e. servidor web)
 Parte en el cliente (p.e. navegador, AJAX)
 Patrones habituales:
 MVC
 Comando

nov-08 alb@uniovi.es 4
Capa de lgica de negocio
 Ofrece un interfaz de servicios que se puede
concretar en un interfaz java
 Cada servicio (mtodo) puede resolver un
caso de uso o parte
 Los servicios pueden ser:
 Sin estado: cada llamada es independiente de las
dems; el cliente puede invocar en cualquier
orden
 Con estado: existe nocin de sesin, una llamada
estar condicionada por las anteriores

nov-08 alb@uniovi.es 5
Capa de lgica de negocio
 El cliente slo conoce la interfaz
 Habr una implementacin de ese interfaz
 Que puede ser cambiada por otra sin afectar
 Puede estar dividida en subcapas
 Capa de lgica: es el ncleo central de la
aplicacin, la esencia del negocio, la lgica y sus
reglas
 Capa de aplicacin: aade algn valor al
procesamiento de la capa de lgica (p.e. generar
un excel, un pdf, importar o exportar datos, etc.)

nov-08 alb@uniovi.es 6
Capa de lgica
 Varios patrones aplicables:
 Dominios sencillos: Active record, Record set
[fowler]
 Dominios complejos: Modelo de dominio
 Problema: gestionar persistencia  mapeador
 Factory
 Command

nov-08 alb@uniovi.es 7
Capa de lgica
 Si se usa modelo de dominio, compuesta de:
 Modelo de dominio: incluye lgica pero no toda
 Clases de proceso sobre el modelo: lgica que no se
puede asignar directamente a ninguna clase del
modelo de dominio (procesos)
 En esta capa no se debera meter ninguna
dependencia de tecnologa de infraestructura
 Debera poderse ejecutar fuera de cualquier entorno
(para testear)
 La persistencia suele ser la principal dependencia. La
capa DAO la evita

nov-08 alb@uniovi.es 8
Capa de persistencia
 Ofrece interfaz a la capa superior
 Las distintas implementaciones no
deberan ser perceptibles por la capa de
lgica
 Uso del patrn DAO
 Con frecuencia un DAO para cada entidad del
modelo
 Obtenidos a travs de una factora
nov-08 alb@uniovi.es 9
Arquitectura en capas (patrones)

Presentacin Lgica Persistencia


MVC Fachada DAO
Comando Factora
Factora

nov-08 alb@uniovi.es 10
Solucin en capas
Persistence
Service Interface
Command Interface
Executor
Control
JDBC
Fa Command Hibernate DAO
Action ca Command D JDBC DAO
Action de Command A JPA DAO
CE
Action
Fa O Spring DAO
Action ca
de D
Command DAO Factory
F

Presentac. Lgica Persistencia


nov-08 alb@uniovi.es 11
Cdigo que
resuelve 
lgica de
negocio

No tiene
dependencias
pero sin contexto de
persistencia ni demarcacin
transaccional
nov-08 alb@uniovi.es 12
Transaccional s; pero lo
queremos sin dependencias
nov-08 alb@uniovi.es 13
EntityManager en DAO

El DAO necesita acceder


al EntityManager

X Se crea otro distinto del


mtodo que llama  no es la
misma transaccin
nov-08 alb@uniovi.es 14
El interfaz de la capa
de DAOs tiene
dependencias

nov-08 alb@uniovi.es 15
ThreadLocal session pattern

nov-08 alb@uniovi.es 16
Command Executor

nov-08 alb@uniovi.es 17
La lgica queda
limpia dentro del
comando

nov-08 alb@uniovi.es 18
EntityManager en el DAO

Se accede al mismo
EntityManager que ya
tiene abierta la transaccin

nov-08 alb@uniovi.es 19
Solucin Spring
Persistence
Service Interface
Interface

Control
JDBC
Fa
Action ca Impl
D Spring DAO
Action de A
Action
Fa O
Action ca Impl
de Spring DI D
DAO Factory
F

Presentac. Lgica Persistencia


nov-08 alb@uniovi.es 20
Valor aadido de Spring ORM
 Implementa ThreadLocal session pattern
 Propagacin entre las capas

 Demarcacin automtica de transacciones


 Declarativa o con interceptor AOP

 Generacin declarativa de DAOs triviales




nov-08 alb@uniovi.es 21