El atributo lazy=true
habilita la carga diferida de las colecciones primarias y secundarias y el mismo atributo fetch="select"
. ¿Hay alguna diferencia entre lazy="true"
y fetch="select"
en Hibernate ?.¿cuál es la diferencia entre lazy = "true" y fetch = "select" en hibernate?
Respuesta
Sí.
El atributo lazy
dice hibernate cuando para obtener los niños.
El atributo fetch
le dice a hibernate cómo obtener los niños.
Cuando dice
La = true atributo perezoso es permitir la carga diferida de los padres y el niño colecciones y lo mismo fetch = "seleccionar" atributo
que es de plano incorrecta. La estrategia de selección de búsqueda NO es lo mismo que desactivar la carga diferida. De hecho, from the documentation
la recuperación por selección: un segundo SELECT se utiliza para recuperar el entidad o colección asociada. A menos que deshabilite explícitamente la recuperación diferida por especificando lazy = "false", esta segunda selección solo se ejecutará cuando acceda a la asociación.
Cuando decimos fetch="select"
, entonces siempre se disparará consultas separadas para recuperar los objetos de asociación, incluso si es lazy ="false"
.
Pero cuando decimos lazy ="true"
, significa que recuperará los objetos de asociación en una consulta por separado, pero no en el momento de cargar el objeto, sino cuando se accede por primera vez a la asociación. Podemos hacerlo diciendo list().size()
.
Cuando decimos fetch="join"
siempre activará una sola consulta para obtener los objetos de asociación de la base de datos.
Para resolver n + 1, seleccione el problema para n consultas (relación padre-hijo) en hibernación usamos fetch = "join" en lugar de fetch = "select". Lazy establece si se cargan objetos secundarios mientras se carga el objeto primario. Debes hacer esta configuración, respetando el archivo de mapeo de hibernación de la clase padre. Lazy = true (significa no cargar el elemento secundario) De forma predeterminada, la carga diferida de los objetos secundarios es verdadera .
- 1. ¿Cuál es la diferencia entre Boolean.TRUE y true en Java?
- 2. ¿Cuál es la diferencia entre while (true) y loop?
- 3. ¿Cuál es la diferencia entre FileStream.Flush() y FileStream.Flush (True)?
- 4. ¿Cuál es la diferencia entre flush y commit en Hibernate?
- 5. ¿Cuál es la diferencia entre persist() y merge() en Hibernate?
- 6. ¿Cuál es la diferencia entre GCD Despatch Sources y select()?
- 7. Hibernate Consulta de JPA OneToOne a pesar de Lazy Fetch
- 8. Hibernate: ¿cuál es la diferencia entre MySQLDialect y MySQLInnoDBDialect?
- 9. SET vs. SELECT - ¿Cuál es la diferencia?
- 10. Diferencia entre AutoPostBack = True y AutoPostBack = ¿Falso?
- 11. ¿Cuál es la diferencia entre DELETE_ORPHAN y DELETE?
- 12. ¿Cuál es la diferencia entre `git fetch origin` y` git remote update origin`?
- 13. ¿Cuál es la diferencia entre + = y = +?
- 14. ¿cuál es la diferencia entre:.! y: r !?
- 15. ¿Cuál es la diferencia entre ".equals" y "=="?
- 16. Cuál es la diferencia entre $ y jQuery
- 17. Cuál es la diferencia entre = y: =
- 18. Cuál es la diferencia entre $ (...) y `...`
- 19. ¿Cuál es la diferencia entre dict() y {}?
- 20. ¿Cuál es la diferencia entre [indefinido] y [,]?
- 21. ¿Cuál es la diferencia entre un JavaBean y un POJO?
- 22. ¿Cuál es la diferencia entre {0} y ""?
- 23. ¿Cuál es la diferencia entre .ToString (+) y ""
- 24. ¿Cuál es la diferencia entre `##` y `hashCode`?
- 25. ¿Cuál es la diferencia entre "$^N" y "$ +"?
- 26. ¿Cuál es la diferencia entre " " y ""?
- 27. ¿Cuál es la diferencia entre "LIKE" y "=" en SQL?
- 28. ¿Cuál es la diferencia entre Lazy.Force() y Lazy.Value
- 29. ¿Cuál es la diferencia entre: = y = en MySQL?
- 30. Cuál es la diferencia entre SELECT y SET en T-SQL
Gracias.Tengo otra duda cuando estoy leyendo recursos diferenciales para la recuperación de Proxy o la búsqueda "sin proxy" se llaman asociación de valor único. ¿Qué es una asociación de un solo valor en hibernación? – user1127214