SlideShare une entreprise Scribd logo
1  sur  22
Télécharger pour lire hors ligne
Hibernate / JPA @luce2
¿Qué deberíamos saber?
•

¿Qué es Hibernate/JPA? Diferencias principales...

•

Cómo recuperar un elemento con un Id

•

Guardar/Actualizar/Eliminar

•

Una relación simple ManyToOne
¿Qué vamos a ver?
•

Dudas?

•

El código está en github.
¿Qué vamos a ver?
•

Cascadas

•

Más relaciones, bidirección...
Cascade
Cascade
•

Similar a las cascades de base de datos:
o Cuando inserte este objeto, insértame también éste otro.
o Cuando elimine este objeto, eliminame éste otro.
o ...
Cascade
•

•

Cascade de JPA: propiedad de @ManyToOne...
o PERSIST
o MERGE*
o REMOVE
o REFRESH*
o DELETE
o ALL
Cascades de Hibernate: anotación @org.hibernate.Cascade (SAVE_UPDATE,
REPLICATE, DELETE_ORPHAN, LOCK, EVICT)
Cascade
•

Prueba un cascade ALL y guarda usuario con su rol
@OneToMany y Fetch
@OneToMany y Fetch
•

•
•

Hagamos un OneToMany a una entidad nueva, un usuario tiene varias
solicitudes.
o nueva clase Java, solicitud, hacerla entidad...
o en usuario añadir un: Set<Solicitud> solicitudes = new
HashSet<Solicitud>(); con @OneToMany
Os recomiendo crear varias solicitudes y asociarlas al mismo usuario y
trabajar siempre con éste.
Recomendación: inicializad las colecciones por defecto
@OneToMany y Fetch
•
•

Hibernate guarda las relaciones si las entidades asociadas no están en la base
de datos.
Si hay cascade guarda todo lo que esté marcado con cascade persist/ALL...
@OneToMany y Fetch
•

Recuperad el usuario y ver si están las solicitudes...
o ...
@OneToMany y Fetch *
•
•

Estrategias de Fetching -> recuperación de relaciones, directamente con un
join en el mismo momento (EAGER) o más tarde (LAZY)...
o FetchType.LAZY / EAGER
Valores por defecto:
o *ToOne: EAGER
o *ToMany: LAZY
@OneToMany y Fetch
•

Prueba el mapeo de solicitudes con una estrategia de fetching EAGER:
o Es un atributo de la anotación @OneToMany(_____)
@OneToMany y Fetch
•

Cuidado con EAGER.
o Sobre todo con entidades 'complejas'
o Hay casos en los que incluso interesa poner a LAZY un cruce *ToOne
o Se personaliza como atributo de la anotación (en el @ManyToOne(...))
o Valor personalizable en tiempo de ejecución!
o Hay una propiedad de configuración para evitar fetches excesivos:
max_fetch_depth
@OneToMany y Fetch
•
•

@Fetch -> formas de hacer el fetching...
o Probad las diferentes estrategias! (SUBSELECT, SELECT, JOIN)
Podemos pre-inicializar colecciones con:
o usuario.getSolicitudes().isEmpty()
o Esto no funciona: usuario.getSolicitudes() (porque no se llama a ningún
dato de la solicitud).
o Probadlo! (dejadlo en Lazy y precargad)
@OneToMany y Fetch
•

Pero mejor: Hibernate.initialize(usuario.getSolicitudes());

•

Por defecto, EAGER a Join y Lazy a subselect
@OneToMany y Fetch
•

Problema de las N+1 solicitudes
@OneToMany y Fetch
•
•

•

Problema de las N+1 solicitudes:
Situación: una persona tiene varios expedientes, mapeado a Lazy y un
paginador con N elementos por página para mostrar personas y expedientes.
o Hibernate hace 1 consulta para recuperar N personas
o Después, cuando va a pintar por pantalla los expedientes, hace una
consulta para consultar el expediente de la primera persona.
o Luego otra para la segunda persona...
o Al final hace N + 1 consultas.
Se puede evitar (Eager, subselect, batch, precarga...)
@OneToMany y Fetch
•
•
•

@OneToMany -> por defecto con join table...
Y si quiero sin join table?
o Hay que especificar una columna a mano con @JoinColumn, él ya
entiende que no tiene que hacer que tabla de unión...
Probadlo!
¿Dudas?
Hibernate / JPA

Contenu connexe

En vedette

Hibernate - JPA @luce 3
Hibernate - JPA @luce 3Hibernate - JPA @luce 3
Hibernate - JPA @luce 3Javier Gamarra
 
Arduino - Cuarta sesión
Arduino - Cuarta sesiónArduino - Cuarta sesión
Arduino - Cuarta sesiónJavier Gamarra
 
El movimiento maker (Foro-e Fyde CajaCanarias)
El movimiento maker (Foro-e Fyde CajaCanarias)El movimiento maker (Foro-e Fyde CajaCanarias)
El movimiento maker (Foro-e Fyde CajaCanarias)Tenerife Maker Space
 
Guia 4 Ejecución - Evaluación Mantenimienot de Computadores I.E. Academico
Guia 4 Ejecución  -  Evaluación Mantenimienot de Computadores I.E. AcademicoGuia 4 Ejecución  -  Evaluación Mantenimienot de Computadores I.E. Academico
Guia 4 Ejecución - Evaluación Mantenimienot de Computadores I.E. AcademicoDiego Fernando Castaño sepulveda
 
Hibernate - JPA @luce 5
Hibernate - JPA @luce 5Hibernate - JPA @luce 5
Hibernate - JPA @luce 5Javier Gamarra
 
Taller de Arduino en Cylicon Valley - Semana 2
Taller de Arduino en Cylicon Valley - Semana 2Taller de Arduino en Cylicon Valley - Semana 2
Taller de Arduino en Cylicon Valley - Semana 2Roberto Santana Valdés
 
Curso Arduino Nivel 3: Mueve cosas con Arduino. Tenerife Maker Space
Curso Arduino Nivel 3: Mueve cosas con Arduino. Tenerife Maker SpaceCurso Arduino Nivel 3: Mueve cosas con Arduino. Tenerife Maker Space
Curso Arduino Nivel 3: Mueve cosas con Arduino. Tenerife Maker SpaceTenerife Maker Space
 
Modos de servicio_para_tv_chinos (1)
Modos de servicio_para_tv_chinos (1)Modos de servicio_para_tv_chinos (1)
Modos de servicio_para_tv_chinos (1)EDITH LLERENA
 
Arduino - Tercera sesión
Arduino - Tercera sesiónArduino - Tercera sesión
Arduino - Tercera sesiónJavier Gamarra
 
5 meses de juegos ágiles
5 meses de juegos ágiles5 meses de juegos ágiles
5 meses de juegos ágilesJavier Gamarra
 
Performance myths in android
Performance myths in androidPerformance myths in android
Performance myths in androidJavier Gamarra
 
Taller de Arduino básico. Tenerife Maker Space. Nivel 2
Taller de Arduino básico. Tenerife Maker Space. Nivel 2Taller de Arduino básico. Tenerife Maker Space. Nivel 2
Taller de Arduino básico. Tenerife Maker Space. Nivel 2Tenerife Maker Space
 
Actividades de-lectoescritura-05
Actividades de-lectoescritura-05Actividades de-lectoescritura-05
Actividades de-lectoescritura-05EDITH LLERENA
 
Introducción a Arduino. Tenerife Maker Space. Nivel 1
Introducción a Arduino. Tenerife Maker Space. Nivel 1Introducción a Arduino. Tenerife Maker Space. Nivel 1
Introducción a Arduino. Tenerife Maker Space. Nivel 1Tenerife Maker Space
 

En vedette (20)

Hibernate - JPA @luce 3
Hibernate - JPA @luce 3Hibernate - JPA @luce 3
Hibernate - JPA @luce 3
 
New Android Languages
New Android LanguagesNew Android Languages
New Android Languages
 
Arduino - Cuarta sesión
Arduino - Cuarta sesiónArduino - Cuarta sesión
Arduino - Cuarta sesión
 
El movimiento maker (Foro-e Fyde CajaCanarias)
El movimiento maker (Foro-e Fyde CajaCanarias)El movimiento maker (Foro-e Fyde CajaCanarias)
El movimiento maker (Foro-e Fyde CajaCanarias)
 
Guia 4 Ejecución - Evaluación Mantenimienot de Computadores I.E. Academico
Guia 4 Ejecución  -  Evaluación Mantenimienot de Computadores I.E. AcademicoGuia 4 Ejecución  -  Evaluación Mantenimienot de Computadores I.E. Academico
Guia 4 Ejecución - Evaluación Mantenimienot de Computadores I.E. Academico
 
Hibernate - JPA @luce 5
Hibernate - JPA @luce 5Hibernate - JPA @luce 5
Hibernate - JPA @luce 5
 
Problemas Propuestos Condicionales Compuestos
Problemas Propuestos Condicionales CompuestosProblemas Propuestos Condicionales Compuestos
Problemas Propuestos Condicionales Compuestos
 
Opinionated android
Opinionated androidOpinionated android
Opinionated android
 
Taller de Arduino en Cylicon Valley - Semana 2
Taller de Arduino en Cylicon Valley - Semana 2Taller de Arduino en Cylicon Valley - Semana 2
Taller de Arduino en Cylicon Valley - Semana 2
 
Curso Arduino Nivel 3: Mueve cosas con Arduino. Tenerife Maker Space
Curso Arduino Nivel 3: Mueve cosas con Arduino. Tenerife Maker SpaceCurso Arduino Nivel 3: Mueve cosas con Arduino. Tenerife Maker Space
Curso Arduino Nivel 3: Mueve cosas con Arduino. Tenerife Maker Space
 
Modos de servicio_para_tv_chinos (1)
Modos de servicio_para_tv_chinos (1)Modos de servicio_para_tv_chinos (1)
Modos de servicio_para_tv_chinos (1)
 
Arduino - Tercera sesión
Arduino - Tercera sesiónArduino - Tercera sesión
Arduino - Tercera sesión
 
5 meses de juegos ágiles
5 meses de juegos ágiles5 meses de juegos ágiles
5 meses de juegos ágiles
 
Performance myths in android
Performance myths in androidPerformance myths in android
Performance myths in android
 
Taller de Arduino básico. Tenerife Maker Space. Nivel 2
Taller de Arduino básico. Tenerife Maker Space. Nivel 2Taller de Arduino básico. Tenerife Maker Space. Nivel 2
Taller de Arduino básico. Tenerife Maker Space. Nivel 2
 
RxJava in practice
RxJava in practice RxJava in practice
RxJava in practice
 
Actividades de-lectoescritura-05
Actividades de-lectoescritura-05Actividades de-lectoescritura-05
Actividades de-lectoescritura-05
 
Introducción a Arduino (TLP2014)
Introducción a Arduino (TLP2014)Introducción a Arduino (TLP2014)
Introducción a Arduino (TLP2014)
 
Introducción a Arduino. Tenerife Maker Space. Nivel 1
Introducción a Arduino. Tenerife Maker Space. Nivel 1Introducción a Arduino. Tenerife Maker Space. Nivel 1
Introducción a Arduino. Tenerife Maker Space. Nivel 1
 
BlueWeekend iOT
BlueWeekend iOTBlueWeekend iOT
BlueWeekend iOT
 

Similaire à Hibernate JPA Tutorial con Ejemplos Básicos

Plone Gubierno Cuarto SesióN1
Plone Gubierno   Cuarto SesióN1Plone Gubierno   Cuarto SesióN1
Plone Gubierno Cuarto SesióN1ajussis
 
Aplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con RedisAplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con RedisAlberto Gimeno
 
Redis, base de datos NoSQL clave-valor
Redis, base de datos NoSQL clave-valorRedis, base de datos NoSQL clave-valor
Redis, base de datos NoSQL clave-valorAlberto Gimeno
 
Persistencia de datos en Java
Persistencia de datos en JavaPersistencia de datos en Java
Persistencia de datos en JavaIker Canarias
 
Un poco más allá con grails. PrimerViernes
Un poco más allá con grails. PrimerViernesUn poco más allá con grails. PrimerViernes
Un poco más allá con grails. PrimerViernesDani Latorre
 
Oracle Coherence (by Leonardo Torres Altez)
Oracle Coherence (by Leonardo Torres Altez)Oracle Coherence (by Leonardo Torres Altez)
Oracle Coherence (by Leonardo Torres Altez)barcelonajug
 
Persistencia en Java - Serialización
Persistencia en Java - SerializaciónPersistencia en Java - Serialización
Persistencia en Java - SerializaciónCarlos Hernando
 
Libra Movilidad - Betabeers Pontevedra
Libra Movilidad - Betabeers PontevedraLibra Movilidad - Betabeers Pontevedra
Libra Movilidad - Betabeers PontevedraMarcos Esperón
 
Libra movilidad
Libra movilidadLibra movilidad
Libra movilidadbetabeers
 
Reglas de Código Simple
Reglas de Código SimpleReglas de Código Simple
Reglas de Código Simplepsluaces
 
INFOSAN Delphi 151- 302 PAGINAS
INFOSAN Delphi  151-  302 PAGINASINFOSAN Delphi  151-  302 PAGINAS
INFOSAN Delphi 151- 302 PAGINASFRANCIACOCO
 

Similaire à Hibernate JPA Tutorial con Ejemplos Básicos (20)

Hibernate - JPA @luce
Hibernate - JPA @luceHibernate - JPA @luce
Hibernate - JPA @luce
 
Mongo Mapper
Mongo MapperMongo Mapper
Mongo Mapper
 
Plone Gubierno Cuarto SesióN1
Plone Gubierno   Cuarto SesióN1Plone Gubierno   Cuarto SesióN1
Plone Gubierno Cuarto SesióN1
 
Aplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con RedisAplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con Redis
 
Redis, base de datos NoSQL clave-valor
Redis, base de datos NoSQL clave-valorRedis, base de datos NoSQL clave-valor
Redis, base de datos NoSQL clave-valor
 
jsf
jsfjsf
jsf
 
Persistencia de datos en Java
Persistencia de datos en JavaPersistencia de datos en Java
Persistencia de datos en Java
 
Un poco más allá con grails. PrimerViernes
Un poco más allá con grails. PrimerViernesUn poco más allá con grails. PrimerViernes
Un poco más allá con grails. PrimerViernes
 
Javascript - 2014
Javascript - 2014Javascript - 2014
Javascript - 2014
 
Oracle Coherence (by Leonardo Torres Altez)
Oracle Coherence (by Leonardo Torres Altez)Oracle Coherence (by Leonardo Torres Altez)
Oracle Coherence (by Leonardo Torres Altez)
 
Persistencia en Java - Serialización
Persistencia en Java - SerializaciónPersistencia en Java - Serialización
Persistencia en Java - Serialización
 
05 jsp tags
05 jsp tags05 jsp tags
05 jsp tags
 
Libra Movilidad - Betabeers Pontevedra
Libra Movilidad - Betabeers PontevedraLibra Movilidad - Betabeers Pontevedra
Libra Movilidad - Betabeers Pontevedra
 
Libra movilidad
Libra movilidadLibra movilidad
Libra movilidad
 
Jpa
JpaJpa
Jpa
 
Algoritmo de ordenamiento: Heap Sort
Algoritmo de ordenamiento: Heap SortAlgoritmo de ordenamiento: Heap Sort
Algoritmo de ordenamiento: Heap Sort
 
Sesion03 apuntes
Sesion03 apuntesSesion03 apuntes
Sesion03 apuntes
 
Reglas de Código Simple
Reglas de Código SimpleReglas de Código Simple
Reglas de Código Simple
 
Introducción a la Programación Orientada a Objetos
Introducción a la Programación Orientada a ObjetosIntroducción a la Programación Orientada a Objetos
Introducción a la Programación Orientada a Objetos
 
INFOSAN Delphi 151- 302 PAGINAS
INFOSAN Delphi  151-  302 PAGINASINFOSAN Delphi  151-  302 PAGINAS
INFOSAN Delphi 151- 302 PAGINAS
 

Dernier

Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesEdomar AR
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOnarvaezisabella21
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzzAlexandergo5
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxtjcesar1
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúCEFERINO DELGADO FLORES
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel tallerValentinaTabares11
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfedepmariaperez
 

Dernier (20)

Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, Aplicaciones
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzz
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel taller
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdf
 

Hibernate JPA Tutorial con Ejemplos Básicos

  • 2. ¿Qué deberíamos saber? • ¿Qué es Hibernate/JPA? Diferencias principales... • Cómo recuperar un elemento con un Id • Guardar/Actualizar/Eliminar • Una relación simple ManyToOne
  • 3. ¿Qué vamos a ver? • Dudas? • El código está en github.
  • 4. ¿Qué vamos a ver? • Cascadas • Más relaciones, bidirección...
  • 6. Cascade • Similar a las cascades de base de datos: o Cuando inserte este objeto, insértame también éste otro. o Cuando elimine este objeto, eliminame éste otro. o ...
  • 7. Cascade • • Cascade de JPA: propiedad de @ManyToOne... o PERSIST o MERGE* o REMOVE o REFRESH* o DELETE o ALL Cascades de Hibernate: anotación @org.hibernate.Cascade (SAVE_UPDATE, REPLICATE, DELETE_ORPHAN, LOCK, EVICT)
  • 8. Cascade • Prueba un cascade ALL y guarda usuario con su rol
  • 10. @OneToMany y Fetch • • • Hagamos un OneToMany a una entidad nueva, un usuario tiene varias solicitudes. o nueva clase Java, solicitud, hacerla entidad... o en usuario añadir un: Set<Solicitud> solicitudes = new HashSet<Solicitud>(); con @OneToMany Os recomiendo crear varias solicitudes y asociarlas al mismo usuario y trabajar siempre con éste. Recomendación: inicializad las colecciones por defecto
  • 11. @OneToMany y Fetch • • Hibernate guarda las relaciones si las entidades asociadas no están en la base de datos. Si hay cascade guarda todo lo que esté marcado con cascade persist/ALL...
  • 12. @OneToMany y Fetch • Recuperad el usuario y ver si están las solicitudes... o ...
  • 13. @OneToMany y Fetch * • • Estrategias de Fetching -> recuperación de relaciones, directamente con un join en el mismo momento (EAGER) o más tarde (LAZY)... o FetchType.LAZY / EAGER Valores por defecto: o *ToOne: EAGER o *ToMany: LAZY
  • 14. @OneToMany y Fetch • Prueba el mapeo de solicitudes con una estrategia de fetching EAGER: o Es un atributo de la anotación @OneToMany(_____)
  • 15. @OneToMany y Fetch • Cuidado con EAGER. o Sobre todo con entidades 'complejas' o Hay casos en los que incluso interesa poner a LAZY un cruce *ToOne o Se personaliza como atributo de la anotación (en el @ManyToOne(...)) o Valor personalizable en tiempo de ejecución! o Hay una propiedad de configuración para evitar fetches excesivos: max_fetch_depth
  • 16. @OneToMany y Fetch • • @Fetch -> formas de hacer el fetching... o Probad las diferentes estrategias! (SUBSELECT, SELECT, JOIN) Podemos pre-inicializar colecciones con: o usuario.getSolicitudes().isEmpty() o Esto no funciona: usuario.getSolicitudes() (porque no se llama a ningún dato de la solicitud). o Probadlo! (dejadlo en Lazy y precargad)
  • 17. @OneToMany y Fetch • Pero mejor: Hibernate.initialize(usuario.getSolicitudes()); • Por defecto, EAGER a Join y Lazy a subselect
  • 18. @OneToMany y Fetch • Problema de las N+1 solicitudes
  • 19. @OneToMany y Fetch • • • Problema de las N+1 solicitudes: Situación: una persona tiene varios expedientes, mapeado a Lazy y un paginador con N elementos por página para mostrar personas y expedientes. o Hibernate hace 1 consulta para recuperar N personas o Después, cuando va a pintar por pantalla los expedientes, hace una consulta para consultar el expediente de la primera persona. o Luego otra para la segunda persona... o Al final hace N + 1 consultas. Se puede evitar (Eager, subselect, batch, precarga...)
  • 20. @OneToMany y Fetch • • • @OneToMany -> por defecto con join table... Y si quiero sin join table? o Hay que especificar una columna a mano con @JoinColumn, él ya entiende que no tiene que hacer que tabla de unión... Probadlo!