No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Usar Lazy y Eager al cargar relaciones

10/25
Recursos

Aportes 6

Preguntas 2

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Si la versión de BD mas reciente de MySQL (8) les marca un error Field “id_customer” doesnt have a default value. al momento de realizar los 2 últimos inserts.
Basta con que ejecuten un sesion de mysql en consola, y escriban:

 SET GLOBAL sql_mode=''

después de eso ya les dejara realizar los inserts;

Para el problema de recursión infinita hay varias soluciones: https://www.baeldung.com/jackson-bidirectional-relationships-and-infinite-recursion

Por lo que entiendo, el LAZY se pone de manera predeterminada en @OneToMany y @ManyToMany porque estos cargan las entidades lo que necesita de más recursos disminuyendo la eficiencia y el rendimiento de las consultas

En Hibernate no existe un modo o una propiedad específica para establecer el **FetchType** en `LAZY` por defecto para todas las relaciones. Sin embargo, se puede lograr algo parecido modificando los modos de recuperación (**FetchMode**) que determinan cómo Hibernate debe cargar las entidades asociadas desde la base de datos. Aquí tienes una breve descripción de cada uno, son 3: 1. SELECT: * **FetchMode.SELECT** (modo de selección) es el valor predeterminado. * Carga las entidades asociadas utilizando consultas adicionales (SELECT) cuando se accede a ellas por primera vez. * Puede generar consultas adicionales (N+1 queries) si se accede a múltiples entidades asociadas. 2. JOIN: * **FetchMode.JOIN** (modo de unión) carga las entidades asociadas utilizando una consulta JOIN en la misma consulta principal. * Evita el problema de N+1 queries, pero puede recuperar datos duplicados. * Útil para relaciones uno a uno o muchos a uno. 3. SUBSLECT: * **FetchMode.SUBSELECT** (modo de subconsulta) también evita el problema de N+1 queries. * Carga todas las entidades asociadas en una subconsulta y las almacena en memoria. * Útil para relaciones uno a muchos (colecciones). En resumen: * SELECT: Consultas adicionales (SELECT) bajo demanda. * JOIN: Consulta JOIN en la misma consulta principal. * SUBSLECT: Subconsulta para cargar todas las entidades asociadas. La propiedad se agrega en el properties y es `spring.jpa.properties.hibernate.default_fetch_mode=(select, join o subselect)`

¡Qué buena explicación sobre cómo funcionan estas dos características! No las conocía, pero reconozco su gran utilidad como valor agregado para mejorar el rendimiento de nuestra aplicación. ¡Gracias!

Muy buena esta clase y qué gran explicación concisa y con ejemplos!