Se solicita información sobre el paradero del estudiante Arshak Karhanyan

Clase 12

Viernes (Noche, 2024)

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

Para la próxima clase 📅