Escolar Documentos
Profissional Documentos
Cultura Documentos
26/04/2007 DAI
Contenido
z Definicin.
z Arquitectura.
z Driver.
z Conexin.
z Consultas.
z Transacciones
Transacciones.
z Pool de conexiones.
z Patrn DAO.
2 Curso 2006/2007
1
26/04/2007
JDBC
JDBC
4 Curso 2006/2007
2
26/04/2007
Arquitectura
ResultSet
Connection Connection
Aplicacin
DriverManager
Driver Driver
JVM
5 Access Curso 2006/2007 Oracle
Driver
z Conjunto de clases encargadas de implementar las interfaces del API y
acceder a la base de datos.
z Tipos:
Driver Tipo 1:
z Utilizan un API nativa estndar
z Ejemplo: puente JDBC:ODBC
Driver Tipo 2:
z Utilizan un API nativa de la base de datos
z Ejemplo: Oracle OCI
Driver
Di Ti
Tipo 3:
3
z Servidor remoto con un API genrica.
z til para aplicaciones en internet.
Driver Tipo 4:
z Totalmente desarrollado en Java
z Ejemplo: Oracle Thin.
6 Curso 2006/2007
3
26/04/2007
Driver
Conexin
8 Curso 2006/2007
4
26/04/2007
DataSource
9 Curso 2006/2007
Consultas SQL
10 Curso 2006/2007
5
26/04/2007
Statement
11 Curso 2006/2007
ResultSet
12 Curso 2006/2007
6
26/04/2007
ResultSet
14 Curso 2006/2007
7
26/04/2007
PreparedStatement
PreparedStatement
8
26/04/2007
Transacciones
17 Curso 2006/2007
Nivel de Aislamiento
Transaccional
z Niveles de aislamiento:
TRANSACTION_NONE:
z Sin soporte transaccional.
TRANSACTION_READ_UNCOMMITED:
z Permite lecturas sobre datos no comprometidos.
TRANSACTION_READ_COMMITED:
z Permite lecturas slo sobre datos comprometidos.
z Nivel por defecto.
TRANSACTION_REPEATABLE_READ.
z Bloquea los datos ledos.
TRANSACTION_SERIALIZABLE.
z Slo una transaccin al mismo tiempo.
z Suelen estar disponibles read commited y serializable.
18 Curso 2006/2007
9
26/04/2007
Concurrencia
19 Curso 2006/2007
z Motivacin:
Mltiples conexiones simultneas a la base de datos.
El establecimiento de una conexin es costoso.
z Consecuencia:
Definir cuidadosamente las transacciones.
Establecer algn mecanismo para optimizar el uso de
conexiones Pool de Conexiones
z Pool de Conexiones:
Habitualmente implementado por los DataSource.
20 Curso 2006/2007
10
26/04/2007
Pool de Conexiones
ConnectionPool - Estructura
C o n n e c t io n W ra p p e r
C o n n e c t io n P o o l
c re a te S ta te m e n t() : S ta te m e n t + pool
g e tC o n n e c tio n ( ) : C o n n e c tio n
p re p a re S ta te m e n t(( c o n s u lta : S trin g ) : P re p a re d S ta te m e n t
* r etu
t rn C o n n e ctio
ti n (c( : C o n n e c titio n P o o l)
c lo s e ()
< < s ta ti c> > ge t In s ta n c e () : D a ta S o u rc e
...()
<<us es >>
c re a te C o n n e c tio n () : C o n n e c tio n
22 Curso 2006/2007
11
26/04/2007
Patrn DAO
z Motivacin:
Almacenar y recuperar informacin persistente de diferentes
fuentes: bases de datos relacionales, LDAP, XML, etc.
Las APIs para el acceso a datos son muy diferentes.
La portabilidad y mantenimiento de los componentes (servlets,
EJB, ...) se ve limitada.
z Solucin:
Usar un objeto DAO (Data Access Object) que abstraiga y
encapsule el acceso a la fuente de datos.
El DAO gestiona la conexin con la fuente de datos para obtener y
almacenar la informacin.
23 Curso 2006/2007
Colaboracin
Fuente de datos
Curso 2006/2007 24
12
26/04/2007
Estrategia de Implementacin
z Basada en los patrones Abstract Factory y Factory Method.
z Pasos:
Definir la interface DAO de nuestros objetos de datos
Factora Abstracta
26 Curso 2006/2007
13
26/04/2007
Factora Concreta
27 Curso 2006/2007
Clase DAO
14
26/04/2007
Estructura
DAOFactoria
getClienteDAO() : ClienteDAO
getProductoDAO() : ProductoDAO
<<static>> getDAOFactoria() : DAOFactoria
AccessDAOFactoria XMLDAOFactoria
getClienteDAO() : ClienteDAO getClienteDAO() : ClienteDAO
getProductoDAO() : ProductoDAO getProductoDAO() : ProductoDAO
<<create>> <<create>>
AccessClienteDAO AccessProductoDAO
<<Interface>> <<Interface>>
ClienteDAO ProductoDAO
create() : Cliente
findAll() : Collection
findByUsuario() : Cliente
update()
29 Curso 2006/2007
Consecuencias
z Beneficios:
Favorece la transparencia.
Facilita la migracin de los componentes.
Reduce la complejidad del cdigo.
Centraliza todo el acceso a datos en una capa.
z Inconvenientes:
Diseo de una jerarqua de clases.
Introduce una nueva capa.
30 Curso 2006/2007
15