Level 1 Flashcards
¿ Qué es un ORM ?
ORM significa Object - Relational Mapping. Es una técnica de programación para automatizar la persistencia de objetos en una base de datos relacional
¿ En qué consiste un ORM ?
Un ORM consta de 4 elementos:
- Un API que realiza operaciones básicas en la DB (CRUD - Create, Read, Update and Delete)
- Un API para expresar consultas que conciernen a las clases
- Facilita la especificación de metadatos
- Facilita la optimización (dirty checking, lazy associations fetching)
¿Cuáles son los niveles de ORM?
Los niveles son:
Estrictamente relacional (stored procedure)
Mapeo ligero de objetos (JDBC)
Mapeo medio de objetos
Mapeo completo de objetos (composición, herencia, polimorfismo, persistencia por accesibilidad)
¿ Qué es Hibernate ?
Es un framework de persistencia en Java que implementa un ORM. Es decir, permite mapear objetos en Java a registros en tablas de una DB relacional. Utiliza archivos de configuración XML.
Su principal propósito es delegar las tareas de persistencia al framework y aligerar el desarrollo de software.
¿Porqué se requieren herramientas como Hibernate?
La principal ventaja es que libera a los desarrolladores de lidiar con SQL
ORM proporciona las siguientes ventajas:
1. Mejora la productividad
API de alto nivel, orientada a objetos
Reduce la cantidad de código a escribir
No se requiere escribir SQL
2. Mejora el rendimiento
Caché sofisticado
Carga temprana o diferida (lazy / eager)
3. Menos código al qué dar mantenimiento
4. Portabilidad (genera SQL específico para el motor de base de datos en cuestión)
¿ Qué simplifica Hibernate ?
- Guardado y Consulta de Objetos de Dominio
- Centraliza la lógica antes de guardar y después de consultar un objeto
- Relaciona objetos entre tablas (*)
- Creación de schema a partir del modelo de datos.
¿Porqué se necesita el archivo XML de mapeo?
- Porque en él se especifica el mapeo entre Clase - Tabla
- Permite especificar la columna que corresponde la llave primaria, así como la forma en que se generan sus valores
- Se especifica el mapeo entre las propiedades del objeto y las columnas) de la tabla
- Se especifican los mapeos con otras clases / tablas (relaciones uno a muchos, muchos a muchos)
¿Cuáles son los métodos más comunes para configurar Hibernate?
Configuración programática (en código)
Archivo XML de configuración (hibernate.cfg.xml)
¿Cuáles son las etiquetas más importantes del archivo hibernate.cfg.xml?
Las etiquetas “property” donde se configuran los datos de conexión a la DB (driver, usuario / pwd de usuario, URL, puerto, dialecto)
Si hay pool de conexión y el tamaño de éste
Las etiquetas “mapping” donde se configuran los archivos XML de cada tabla / clase
¿Cuáles son las interfaces (java) básicas de Hibernate?
- Session
- SessionFactory
- Configuration
- Transaction
- Query and Criteria
¿Qué rol juega la interfaz “Session” en Hibernate?
Esta es la interfaz principal que utiliza un aplicación que integra Hibernate.
Consta de un solo hilo y representa un objeto de corta vida que se comunica con la aplicación y la base de datos. Permite crear objetos de consulta para recuperar objetos persistentes.
Session session = sessionFactory.openSession();
Su rol es:
- Encapsular una conexión JDBC
- Servir de fábrica de transacciones
- Contener el caché de objetos persistentes
¿Qué rol juega la interfaz “SessionFactory” en Hibernate?
La aplicación obtiene una instancia de sesión a DB mediante un SessionFactory. Usualmente existe sólo una fábrica de sesiones en la aplicación.
El caché de la fábrica, construye sentencias SQL y otros metadatos que Hibernate utiliza en tiempo de ejecución. También mantiene datos en caché.
SessionFactory sessionFactory = configuration.buildSessionFactory();
¿Cuál es el flujo de comunicación general de Hibernate con el RDBMS?
El flujo es:
- Carga el archivo de configuración de Hibernate y crea un objeto de configuración. Éste a su vez, carga los archivos XML con los mapeos de las tablas
- Crea la fábrica de sesiones (SessionFctory) a partir del objeto de configuración.
- Genera consultas HQL
- Ejecuta consultas para obtener la lista de los objetos Java
¿Qué es HQL?
Significa Hibernate Query Language y es una extensión de SQL orientada a objetos
Ofrece un lenguaje que incorpora un mecanismo potente y flexible para consultar, almacenar, actualizar y recuperar objetos de una DB.
¿Cómo se mapean los objetos Java a registros en la DB?
Primero necesitamos un objeto java POJO (beans with setter and getter).
Luego escribimos el archivo hbm.xml, donde se especifica la tabla que corresponde a la clase del objeto y se establecen las relaciones entre propiedades del objeto y columnas de la tabla.