SlideShare ist ein Scribd-Unternehmen logo
1 von 22
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Andere mochten auch

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
 

Andere mochten auch (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
 

Ähnlich wie 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
 

Ähnlich wie 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
 

Kürzlich hochgeladen

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
 
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
 
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
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxGESTECPERUSAC
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersIván López Martín
 
Slideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan GerenciaSlideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan Gerenciacubillannoly
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
Análisis de Artefactos Tecnologicos (3) (1).pdf
Análisis de Artefactos Tecnologicos  (3) (1).pdfAnálisis de Artefactos Tecnologicos  (3) (1).pdf
Análisis de Artefactos Tecnologicos (3) (1).pdfsharitcalderon04
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfFernandoOblitasVivan
 
Herramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfHerramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfKarinaCambero3
 
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
 
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
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzzAlexandergo5
 
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
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docxobandopaula444
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1ivanapaterninar
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificialcynserafini89
 

Kürzlich hochgeladen (20)

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
 
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 camino a convertirse en Microsoft MVP
El camino a convertirse en Microsoft MVPEl camino a convertirse en Microsoft MVP
El camino a convertirse en Microsoft MVP
 
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ú
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptx
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 Testcontainers
 
Slideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan GerenciaSlideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan Gerencia
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
Análisis de Artefactos Tecnologicos (3) (1).pdf
Análisis de Artefactos Tecnologicos  (3) (1).pdfAnálisis de Artefactos Tecnologicos  (3) (1).pdf
Análisis de Artefactos Tecnologicos (3) (1).pdf
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdf
 
Herramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfHerramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdf
 
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
 
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
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzz
 
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
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificial
 

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!