Resumen
En esta oportunidad estudiamos cómo conectarnos con un RDBM utilizando un ORM:
- Presentamos JPA y Hibernate
- Aprendimos el Ciclo de vida de Objetos
- Hablamos de Convenciones y Configuraciones
- Aprendimos como agregar anotaciones a nuestro modelo para mapearlo a un modelo de datos
- Aprendimos cómo persistir objetos y realizar tests sobre ellos
- Conversamos sobre cambios al modelo de objetos devenidos del mapeo relacional
Hoja de Ruta
- JDBC
- Sirve para Conectarnos a Bases de Datos (Relacionales)
- Sigue la idea del patrón adapter
- Oracle
- SqlServer
- Postgre
- MariaDB
- HSQLDB
- Adapta muy poquitas cosas y aún tenemos que gestionar buena parte de la desadaptación de impedencia a mano (impedance missmatch)
- JPA
- Se para encima de JDBC
- Resuelve muchos más problemas de impedance missmatch
- Nos da una mejor capa de abstracción del motor de base de datos
En definitiva las tecnologías que estamos usando se relacionan así:
JPA -> Hibernate -> JDBC -> HSLQDB/MySQL/MariaDB/Postgre
| |
| +- (cadenas de conexión y drivers)
|
+--- Anotaciones
+--- Dependencias
+--- Archivo de configuración persistence.xml
Estudiamos también el pseudocódigo de conexión y acceso a la base de datos con JDBC:
// var driver = new PostgreSQL("postgre://franco:123456789@localhost:2000/qmp");
// var driver = new HSQLDB("hsqldb://un_archivo/qmp");
Driver driver = new MysqlDriver("mysql://franco:123456789@localhost:2000/qmp");
ResultSet resultados = driver.ejecutarSQL("select * from prendas");
Prendas prendas = resultados.map(resultado => {
return new Prenda((String) resultado.get(0), (int) resultado.get(1), ...);
});
// He aquí la base de un repositorio ^
// Pero tiene ciertos problemas:
// - es complejo de escribir
// - es difícil de mantener
// - implica repetir lógica
// - está fuertemente acoplado al motor de base de datos
// - es poco flexible: no es sencillo incorporar operaciones nuevas, elementos nuevos del domino
// migrar de base de datos
// Por eso vamos a buscar otras alternativas
// "asperezas" entre el modelo relacional y el modelo de objetos
// => impedance mismatch (desadaptación de impedancia)
Material
- Presentación utilizada
- ORM: secciones 1 - 4
- Código de ejemplo de conexión JDBC
- Normalización
- Repositorios de introducción a ORM:
- Fútbol versión JDBC
- Paso a paso:
Para la próxima clase 📅
- Leer:
- El código visto en esta clase, siguiendo esta hoja de ruta. NOTA: Se recomienda leer mirar brevemente antes la versión sin mapeos
- Apunte sobre ORM (Sección 5: Subtipos en el modelo relacional)
- Ejercicio: Canchas de Paddle, Parte 2 (Obligatorio)
- Releer (o leer si no lo hiciste ya):
- Guía de anotaciones.
- Apunte: Incorporar JPA a nuestra solución
- ORM: secciones 1 - 4