Saltar al contenido

¿Cuál es el uso de la anotación Hibernate @LazyCollection?

Solución:

EXTRA = .size () y .contains () no inicializarán toda la colección

CIERTO = inicializar toda la colección en el primer acceso

FALSO = Carga ansiosa

En realidad, no hay razón para usar @LazyCollection.

los TRUE y FALSE los valores no son necesarios ya que se puede obtener el mismo comportamiento con el JPA FetchType.LAZY o FetchType.EAGER.

los EXTRA value no tiene equivalente en JPA y fue diseñado para colecciones muy grandes. Cuando accedes a un EXTRA colección perezosa por primera vez, la colección no está completamente cargada, como suele ser el caso con cualquier colección JPA.

En su lugar, cada elemento se recupera uno por uno, utilizando un secundario SELECT. Esto puede parecer una optimización, pero no es porque EXTRA Las colecciones perezosas son propensas a problemas de consulta N + 1.

Tenga en cuenta que esto solo funciona para colecciones ordenadas, ya sea List(s) que están anotados con @OrderColumn o Map(s). Para bolsas (p. Ej., Regulares List(s) de entidades que no conservan ningún orden determinado), el @LazyCollection(LazyCollectionOption.EXTRA) se comporta como cualquier otro LAZY colección (la colección se recupera por completo cuando se accede por primera vez).

Si tiene una colección muy grande, no debería mapearla en absoluto. En su lugar, debe mapear solo el @ManyToOne side y, en lugar de una colección del lado principal, debe usar una consulta JPQL paginada.

Las consultas JPQL son mucho más fáciles de ajustar porque puede aplicar cualquier criterio de filtrado y puede paginar el conjunto de resultados.

Para darle una pista, es principalmente por razones de rendimiento, puede comenzar a leer los siguientes enlaces:

Caché de segundo nivel

Documentación de Hibernate

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *