SlideShare una empresa de Scribd logo
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

Más contenido relacionado

Destacado

Hibernate - JPA @luce 3
Hibernate - JPA @luce 3Hibernate - JPA @luce 3
Hibernate - JPA @luce 3
Javier Gamarra
 
New Android Languages
New Android LanguagesNew Android Languages
New Android Languages
Javier Gamarra
 
Arduino - Cuarta sesión
Arduino - Cuarta sesiónArduino - Cuarta sesión
Arduino - Cuarta sesión
Javier 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. Academico
Diego Fernando Castaño sepulveda
 
Hibernate - JPA @luce 5
Hibernate - JPA @luce 5Hibernate - JPA @luce 5
Hibernate - JPA @luce 5
Javier Gamarra
 
Problemas Propuestos Condicionales Compuestos
Problemas Propuestos Condicionales CompuestosProblemas Propuestos Condicionales Compuestos
Problemas Propuestos Condicionales Compuestos
Diego Fernando Castaño sepulveda
 
Opinionated android
Opinionated androidOpinionated android
Opinionated android
Javier 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 2
Roberto 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 Space
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)
EDITH LLERENA
 
Arduino - Tercera sesión
Arduino - Tercera sesiónArduino - Tercera sesión
Arduino - Tercera sesión
Javier Gamarra
 
5 meses de juegos ágiles
5 meses de juegos ágiles5 meses de juegos ágiles
5 meses de juegos ágiles
Javier Gamarra
 
Performance myths in android
Performance myths in androidPerformance myths in android
Performance myths in android
Javier 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 2
Tenerife Maker Space
 
RxJava in practice
RxJava in practice RxJava in practice
RxJava in practice
Javier Gamarra
 
Actividades de-lectoescritura-05
Actividades de-lectoescritura-05Actividades de-lectoescritura-05
Actividades de-lectoescritura-05
EDITH LLERENA
 
Introducción a Arduino (TLP2014)
Introducción a Arduino (TLP2014)Introducción a Arduino (TLP2014)
Introducción a Arduino (TLP2014)
Tenerife Maker Space
 
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
Tenerife Maker Space
 
BlueWeekend iOT
BlueWeekend iOTBlueWeekend iOT
BlueWeekend iOT
Tenerife Maker Space
 

Destacado (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
 

Similar a Hibernate - JPA @luce 2

Hibernate - JPA @luce
Hibernate - JPA @luceHibernate - JPA @luce
Hibernate - JPA @luce
Javier Gamarra
 
Mongo Mapper
Mongo MapperMongo Mapper
Mongo Mapper
Francisco Viramontes
 
Plone Gubierno Cuarto SesióN1
Plone Gubierno   Cuarto SesióN1Plone Gubierno   Cuarto SesióN1
Plone Gubierno Cuarto SesióN1
ajussis
 
Aplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con RedisAplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con Redis
Alberto 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-valor
Alberto Gimeno
 
jsf
jsfjsf
Persistencia de datos en Java
Persistencia de datos en JavaPersistencia de datos en Java
Persistencia de datos en Java
Iker 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. PrimerViernes
Dani Latorre
 
Javascript - 2014
Javascript - 2014Javascript - 2014
Javascript - 2014
Carlos Alonso Pérez
 
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ón
Carlos Hernando
 
05 jsp tags
05 jsp tags05 jsp tags
Libra movilidad
Libra movilidadLibra movilidad
Libra movilidad
betabeers
 
Libra Movilidad - Betabeers Pontevedra
Libra Movilidad - Betabeers PontevedraLibra Movilidad - Betabeers Pontevedra
Libra Movilidad - Betabeers Pontevedra
Marcos Esperón
 
Jpa
JpaJpa
Algoritmo de ordenamiento: Heap Sort
Algoritmo de ordenamiento: Heap SortAlgoritmo de ordenamiento: Heap Sort
Algoritmo de ordenamiento: Heap Sort
Daniel Gomez Jaramillo
 
Sesion03 apuntes
Sesion03 apuntesSesion03 apuntes
Sesion03 apuntes
Thomas Santiago Gonzalez
 
Reglas de Código Simple
Reglas de Código SimpleReglas de Código Simple
Reglas de Código Simple
psluaces
 
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
Carlos Luis Sánchez Bocanegra
 
INFOSAN Delphi 151- 302 PAGINAS
INFOSAN Delphi  151-  302 PAGINASINFOSAN Delphi  151-  302 PAGINAS
INFOSAN Delphi 151- 302 PAGINAS
FRANCIACOCO
 

Similar a Hibernate - JPA @luce 2 (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
Libra movilidadLibra movilidad
Libra movilidad
 
Libra Movilidad - Betabeers Pontevedra
Libra Movilidad - Betabeers PontevedraLibra Movilidad - Betabeers Pontevedra
Libra Movilidad - Betabeers Pontevedra
 
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
 

Último

PLAN DE MANTENMIENTO preventivo de un equipo de computo.pdf
PLAN DE MANTENMIENTO preventivo de un equipo de computo.pdfPLAN DE MANTENMIENTO preventivo de un equipo de computo.pdf
PLAN DE MANTENMIENTO preventivo de un equipo de computo.pdf
70244530
 
mantenimiento de chasis y carroceria1.pptx
mantenimiento de chasis y carroceria1.pptxmantenimiento de chasis y carroceria1.pptx
mantenimiento de chasis y carroceria1.pptx
MiguelAtencio10
 
EXAMEN DE TOPOGRAFIA RESUELTO-2017 CURSO DE UNIVERSIDAD
EXAMEN DE TOPOGRAFIA RESUELTO-2017 CURSO DE UNIVERSIDADEXAMEN DE TOPOGRAFIA RESUELTO-2017 CURSO DE UNIVERSIDAD
EXAMEN DE TOPOGRAFIA RESUELTO-2017 CURSO DE UNIVERSIDAD
AngelCristhianMB
 
Inteligencia Artificial
Inteligencia ArtificialInteligencia Artificial
Inteligencia Artificial
YashiraPaye
 
Flows: Mejores Prácticas y Nuevos Features
Flows: Mejores Prácticas y Nuevos FeaturesFlows: Mejores Prácticas y Nuevos Features
Flows: Mejores Prácticas y Nuevos Features
Paola De la Torre
 
Projecte Iniciativa TIC 2024 SOPRA STERIA. inCV.pdf
Projecte Iniciativa TIC 2024 SOPRA STERIA. inCV.pdfProjecte Iniciativa TIC 2024 SOPRA STERIA. inCV.pdf
Projecte Iniciativa TIC 2024 SOPRA STERIA. inCV.pdf
Festibity
 
Nuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsadNuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsad
larapalaciosmonzon28
 
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
AMADO SALVADOR
 
computacion global 3.pdf pARA TERCER GRADO
computacion global 3.pdf pARA TERCER GRADOcomputacion global 3.pdf pARA TERCER GRADO
computacion global 3.pdf pARA TERCER GRADO
YaniEscobar2
 
TIC en educacion.rtf.docxlolololololololo
TIC en educacion.rtf.docxlolololololololoTIC en educacion.rtf.docxlolololololololo
TIC en educacion.rtf.docxlolololololololo
KukiiSanchez
 
Manual de soporte y mantenimiento de equipo de cómputo
Manual de soporte y mantenimiento de equipo de cómputoManual de soporte y mantenimiento de equipo de cómputo
Manual de soporte y mantenimiento de equipo de cómputo
doctorsoluciones34
 
Catalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador Valencia
Catalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador ValenciaCatalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador Valencia
Catalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador Valencia
AMADO SALVADOR
 
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANOREVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
gisellearanguren1
 
Manual Web soporte y mantenimiento de equipo de computo
Manual Web soporte y mantenimiento de equipo de computoManual Web soporte y mantenimiento de equipo de computo
Manual Web soporte y mantenimiento de equipo de computo
mantenimientocarbra6
 
625204013-64-Camino-a-----La-Lectura.pdf
625204013-64-Camino-a-----La-Lectura.pdf625204013-64-Camino-a-----La-Lectura.pdf
625204013-64-Camino-a-----La-Lectura.pdf
yuberpalma
 
Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)
Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)
Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)
codesiret
 
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIAMONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
leia ereni
 
El uso de las TIC por Cecilia Pozos S..pptx
El uso de las TIC  por Cecilia Pozos S..pptxEl uso de las TIC  por Cecilia Pozos S..pptx
El uso de las TIC por Cecilia Pozos S..pptx
cecypozos703
 
Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....
Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....
Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....
MiguelAtencio10
 
Manual de Soporte y mantenimiento de equipo de cómputos
Manual de Soporte y mantenimiento de equipo de cómputosManual de Soporte y mantenimiento de equipo de cómputos
Manual de Soporte y mantenimiento de equipo de cómputos
cbtechchihuahua
 

Último (20)

PLAN DE MANTENMIENTO preventivo de un equipo de computo.pdf
PLAN DE MANTENMIENTO preventivo de un equipo de computo.pdfPLAN DE MANTENMIENTO preventivo de un equipo de computo.pdf
PLAN DE MANTENMIENTO preventivo de un equipo de computo.pdf
 
mantenimiento de chasis y carroceria1.pptx
mantenimiento de chasis y carroceria1.pptxmantenimiento de chasis y carroceria1.pptx
mantenimiento de chasis y carroceria1.pptx
 
EXAMEN DE TOPOGRAFIA RESUELTO-2017 CURSO DE UNIVERSIDAD
EXAMEN DE TOPOGRAFIA RESUELTO-2017 CURSO DE UNIVERSIDADEXAMEN DE TOPOGRAFIA RESUELTO-2017 CURSO DE UNIVERSIDAD
EXAMEN DE TOPOGRAFIA RESUELTO-2017 CURSO DE UNIVERSIDAD
 
Inteligencia Artificial
Inteligencia ArtificialInteligencia Artificial
Inteligencia Artificial
 
Flows: Mejores Prácticas y Nuevos Features
Flows: Mejores Prácticas y Nuevos FeaturesFlows: Mejores Prácticas y Nuevos Features
Flows: Mejores Prácticas y Nuevos Features
 
Projecte Iniciativa TIC 2024 SOPRA STERIA. inCV.pdf
Projecte Iniciativa TIC 2024 SOPRA STERIA. inCV.pdfProjecte Iniciativa TIC 2024 SOPRA STERIA. inCV.pdf
Projecte Iniciativa TIC 2024 SOPRA STERIA. inCV.pdf
 
Nuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsadNuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsad
 
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
 
computacion global 3.pdf pARA TERCER GRADO
computacion global 3.pdf pARA TERCER GRADOcomputacion global 3.pdf pARA TERCER GRADO
computacion global 3.pdf pARA TERCER GRADO
 
TIC en educacion.rtf.docxlolololololololo
TIC en educacion.rtf.docxlolololololololoTIC en educacion.rtf.docxlolololololololo
TIC en educacion.rtf.docxlolololololololo
 
Manual de soporte y mantenimiento de equipo de cómputo
Manual de soporte y mantenimiento de equipo de cómputoManual de soporte y mantenimiento de equipo de cómputo
Manual de soporte y mantenimiento de equipo de cómputo
 
Catalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador Valencia
Catalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador ValenciaCatalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador Valencia
Catalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador Valencia
 
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANOREVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
 
Manual Web soporte y mantenimiento de equipo de computo
Manual Web soporte y mantenimiento de equipo de computoManual Web soporte y mantenimiento de equipo de computo
Manual Web soporte y mantenimiento de equipo de computo
 
625204013-64-Camino-a-----La-Lectura.pdf
625204013-64-Camino-a-----La-Lectura.pdf625204013-64-Camino-a-----La-Lectura.pdf
625204013-64-Camino-a-----La-Lectura.pdf
 
Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)
Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)
Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)
 
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIAMONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
 
El uso de las TIC por Cecilia Pozos S..pptx
El uso de las TIC  por Cecilia Pozos S..pptxEl uso de las TIC  por Cecilia Pozos S..pptx
El uso de las TIC por Cecilia Pozos S..pptx
 
Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....
Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....
Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....
 
Manual de Soporte y mantenimiento de equipo de cómputos
Manual de Soporte y mantenimiento de equipo de cómputosManual de Soporte y mantenimiento de equipo de cómputos
Manual de Soporte y mantenimiento de equipo de cómputos
 

Hibernate - JPA @luce 2

  • 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!