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

Clase 14

Viernes (Noche, 2023)

Resumen

En esta oportunidad seguimos profundizando en los conceptos de ORM y la tecnología JPA/Hibernate. Presentamos la anotación OrderColumn e incorporamos los conceptos de valores y entidades (value object vs entities) y las anotaciones ElementCollection, Embedded y Embeddable. Además, encaramos un parcial como ejercicio integrador.

Algunos corolarios:

  • Corolario 1: por defecto, los tipos con los que tipamos a nuestras colecciones (set, list, etc) NO son tenidos en cuenta.
  • Corolario 2: por defecto, todas las relaciones funcionan como una bolsa (bag: con repetidos, sin orden)
  • Corolario 3: podemos usar OrderColumn para mantener el orden de las listas en las que me interese preservarlo a nivel objetos y/o relacional
  • Corolario 4: OrderColumn va a la tabla intermedia cuando se trata de una relación many-to-many
  • Corolario 5: las relaciones se cargan por defecto de forma diferida (lazy) esto se puede cambiar con el fetchType de las relaciones. Este comportamiento está vinculado al problema llamado N + 1
  • Corolario 6: no se pueden persistir atributos multivaluados de forma directa, pero se pueden usar ElementCollection. evitando así tener que tener una @Entity adicional (aún sí se necesaria una tabla adicional)
  • Corolario 7: Los ElementCollection soportan las mismas anotaciones de column y OrderColumn
  • Corolario 8: Los Embeddable puede ser usados en Elementcollections
  • Corolario 9: Los Embeddable no son enums ni viceversa
  • Corolario 10: Los Embeddable no soportan polimorfismo, ergo para poder embeber algo, tiene que ser no polimórfico
  • Corolario 11: Los Embeddable tienen que ser value objects

Paréntesis: Taxonomías de objetos. Recordar que los estados son una terna de:

  • estado
  • identidad
  • comportamiento

Si bien entonces todos los objetos tienen estas tres características, no todas son igualmente importantes. Por eso tenemos al menos cuatro tipos de estereotipos de objetos:

  • Símbolos (como por ejemplo los enums básicos): lo importante es su identidad, no tienen estado, y el comportamiento está supeditado a su identidad
  • Entidades: lo importante es su identidad, luego su estado y el comportamiento está supeditado a estos dos
  • Servicios (ejemplo, un strategy): son objetos que tienen comportamiento importante, estado supeditado al comportamiento y poca o nula identidad
  • Valores (value-objects): son objectos donde lo más importante es el estado, tienen comportamiento supeditado al mismo y NO tienen identidad importante.

Ver también acá

Material

Para la próxima clase

  1. Introducción a Arquitectura Web
  2. Tutorial HTTP: hasta el punto 8. Hacerlo luego de leer el apunte anterior.

Y luego…

  • Liberaremos el enunciado del TPI4: Juego de Tronos
  • Liberamos el enunciado del TPA4