Tengo un objeto de dominio Hibernate que se carga en diferentes partes de la aplicación. A veces es conveniente cargar perezosas todas las asociaciones y otras es mejor cargar todo en una sola combinación. Como un compromiso afortunadamente feliz que he encontrado:Hibernate: batch_size? Segundo nivel de caché?
Al usar la recuperación por lotes, Hibernate puede cargar varios proxies no inicializados si se accede a un proxy. La búsqueda por lotes es una optimización de la estrategia de búsqueda de selección perezosa.
hibernate.default_batch_fetch_size
:
Uso de la recuperación en lotes, Hibernate puede cargar varios proxies sin inicializar Si se accede a un proxy. La recuperación por lotes es una optimización de la estrategia de recuperación de selección diferida .
También veo:
hibernate.jdbc.fetch_size
:
Un valor distinto de cero determina el JDBC traiga tamaño (llamadas Statement.setFetchSize()).
Bueno, ¿es Hibernate lo suficientemente inteligente como para buscar en el caché de segundo nivel cuando se realiza la búsqueda por lotes? es decir, ¿se obtiene una para la llamada inicial a la asociación y luego las siguientes X llamadas golpean la memoria caché? De esa forma puedo tener la carga lenta que deseo pero también presionar el caché a menudo para las transacciones más grandes.
Si todo el contenido de la colección ya está contenido en la memoria caché, ¿seguirá ejecutando las consultas al acceder a la colección?
Gracias.
Ahora esto es algo que también me gustaría saber la respuesta. – Zoidberg
Marque mi pregunta :-) – davidemm