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 llamadoN + 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 yOrderColumn
- Corolario 8: Los
Embeddable
puede ser usados enElementcollection
s - 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
- Presentación
- Ejemplo de clase:
- Parcial Juego de Tronos
Para la próxima clase
- Introducción a Arquitectura Web
- 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