Persistencia de Objetos
Definicion
• Persistencia: El la capacidad de un objecto
to continuar existiendo despues que su
creador (programa que crea este) deja de
existir.
A grafica idea de persistencia
Program execution
Program execution
Object Lifetime
Time
Program
start
Object
creation
Program
end
Program
start
Object
edition
“…object outlives the execution of the program…”
3
Program
end
Persistencia de Objectos
•Datos que existen entre varias ejecuciones de un programa
•Datos que existen entre varias versiones de un programa
Program P
Program Q
Time
Read / Write
Time
Objects
repository
4
Read / Write
Java Database Connectivity (JDBC)
Java Database Connectivity, más conocida por sus siglas JDBC, es
una API que permite la ejecución de operaciones sobre bases de
datos desde el lenguaje de programación Java, independientemente del
sistema operativo donde se ejecute o de la base de datos a la cual se
accede, utilizando el dialecto SQL del modelo de base de datos que se
utilice.
El API JDBC se presenta como una colección de interfaces Java y métodos
de gestión de manejadores de conexión hacia cada modelo específico de
base de datos. Un manejador de conexiones hacia un modelo de base de
datos en particular es un conjunto de clases que implementan las
interfaces Java y que utilizan los métodos de registro para declarar los
tipos de localizadores a base de datos (URL) que pueden manejar.
JDBC Arquitectura
Paquete java.sql
JDBC ofrece el paquete java.sql, en el que existen clases muy útiles para
trabajar con bases de datos.
Clase
Description
DriverManager
Para cargar un driver
Connection
Para establecer conexiones con las bases de datos
Statement
Para crear consultas SQL y enviarlas a las BBDD
ResultSet
Para almacenar el resultado de la consulta
Controladores JDBC
Los controladores JDBC son adaptadores del lado-cliente (se
instalan en la máquina cliente, no en el servidor) para convertir las
peticiones desde los programas Java a un protocolo que pueda
entender DBMS.
Tipos
• Existen controladores comerciales y libre para la mayoría de las
bases de datos relacionales y pueden ser de cuatro tipos:
Tipo
Description
Tipo 1
Puente JDBC-ODBC
Tipo 2
Controlador nativo de la API
Tipo 3
Controlador de protocolo de red
Tipo 4
Controlador de protocolo de red
Hibernate
• Hibernate es una herramienta de Mapeo objeto-relacional para
la plataforma Java (y disponible también para .Net con el nombre
de NHibernate) que facilita el mapeo de atributos entre una base de
datos relacional tradicional y el modelo deobjetos de una aplicación,
mediante archivos declarativos (XML) que permiten establecer estas
relaciones.
Arquitectura
El diagrama a continuación brinda una perspectiva a alto nivel de la arquitectura de
Hibernate:
Arquitectura Detallada
•
•
•
SessionFactory (org.hibernate.SessionFactory) Un caché threadsafe (inmutable)
de mapeos compilados para una sola base de datos. Una fábrica de Session y un
cliente de ConnectionProvider, SessionFactory puede mantener un caché opcional
(de segundo nivel) de datos reusables entre transacciones a nivel de proceso o de
clúster.
Session (org.hibernate.Session) Un objeto mono-hebra, de corta vida que
representa una conversación entre la aplicación y el almacenamiento persistente.
Envuelve una conexión JDBC y es una fábrica de Transaction. Session mantiene un
caché requerido de primer nivel de objetos persistentes, que se utiliza cuando se
navega el gráfico de objetos o mientras se buscan objetos por identificador.
Objetos y colecciones persistentes Objetos de corta vida, mono-hebra contienen
un estado persistente así como una funcionalidad empresarial. Estos pueden ser
JavaBeans/POJOs normales. Estos se encuentran asociados con exactamente
una Session. Tan pronto como la Session se cierre, serán separados y estarán libres
para utilizarlos en cualquier capa de aplicación, (por ejemplo, directamente como
objetos de transferencia de datos hacia y desde la presentación).
• Objetos y colecciones transitorios y separados: Instancias de clases
persistentes que no se encuentran actualmente asociadas con
una Session. Pueden haber sido instanciadas por la aplicación y aún no
haber sido persistidas, o pueden haber sido instanciadas por
una Session cerrada.
• Transaction (org.hibernate.Transaction) (Opcional) Un objeto de corta
vida, mono-hebra que la aplicación utiliza para especificar unidades
atómicas de trabajo. Abstrae la aplicación de las transacciones
subyacentes JDBC, JTA o CORBA. En algunos casos, una Session puede
extenderse sobre varias Transactiones. Sin embargo, la demarcación de la
transacción, ya sea utilizando la API subyacente o Transaction, nunca es
opcional.
• ConnectionProvider (org.hibernate.connection.ConnectionProvider)
(Opcional) Una fábrica y pool de conexiones JDBC. Abstrae a la aplicación
del Datasource oDriverManager subyacente. No se expone a la aplicación,
pero puede ser extendido/implementado por el desarrollador.
• TransactionFactory (org.hibernate.TransactionFactory) (Opcional)
Una fábrica de instancias de Transaction. No se expone a la
aplicación pero puede ser extendido/implementado por el
desarrollador.
• Extension Interfaces Hibernate ofrece un rango de interfaces de
extensión opcionales que puede implementar para personalizar el
comportamiento de su capa de persistencia. Para obtener más
detalles, vea la documentación de la API.
Archivo de Mapeo
• Hibernate necesita saber cómo cargar y almacenar objetos de la clase
persistente. En este punto es donde entra en juego el archivo de mapeo
de Hibernate. Este archivo le dice a Hibernate a que tabla tiene que
acceder en la base de datos, y que columnas debe utilizar en esta tabla.
• http://docs.jboss.org/hibernate/stable/core/reference/esES/html/tutorial.html#tutorial-associations
• http://docs.jboss.org/hibernate/stable/core/reference/esES/html/mapping.html
• http://docs.jboss.org/hibernate/stable/core/reference/esES/html/collections.html
• http://docs.jboss.org/hibernate/stable/core/reference/esES/html/associations.html
Configuración de Hibernate
• Para la configuración de Hibernate, podemos utilizar un
archivo hibernate.properties simple, un archivohibernate.cfg.xml un poco
más sofisticado, o incluso una configuración completamente
programática. La mayoría de los usuarios prefieren el archivo de
configuración XML:
• http://docs.jboss.org/hibernate/stable/core/reference/esES/html/session-configuration.html
Consultas en Hibernate
• http://docs.jboss.org/hibernate/stable/core/reference/esES/html/objectstate.html
• http://docs.jboss.org/hibernate/stable/core/reference/esES/html/queryhql.html
• http://docs.jboss.org/hibernate/stable/core/reference/esES/html/querysql.html
Data Access Object
• Data Access Object (DAO, Objeto de Acceso a Datos) es un componente de
software que suministra una interfaz común entre la aplicación y uno o
más dispositivos de almacenamiento de datos, tales como una Base de
datos o un archivo.
Ventajas
• Los Objetos de Acceso a Datos son un Patrón
de Diseño Core J2EE y considerados una
buena practica. La ventaja de usar objetos de
acceso a datos es que cualquier objeto de
negocio (aquel que contiene detalles
específicos de operación o aplicación) no
requiere conocimiento directo del destino
final de la información que manipula.
Desventajas
• La flexibilidad tiene un precio. Cuando se
añaden DAOs a una aplicación, la complejidad
adicional de usar otra capa de persistencia
incrementa la cantidad de código ejecutado
durante tiempo de ejecución. La configuración
de las capas de persistencia requiere en la
mayoría de los casos mucho trabajo.
• Las aplicaciones críticas con el rendimiento no
deberían usar DAOs.
Descargar

Persistencia