У меня есть объект домена Hibernate, который загружается разными частями приложения. Иногда выгодно лениво загружать каждую ассоциацию, а иногда лучше загружать все за одно соединение. В качестве, надеюсь, счастливого компромисса я нашел:
Используя пакетную выборку, Hibernate может загружать несколько неинициализированных прокси-серверов при доступе к одному прокси-серверу. Пакетная выборка — это оптимизация стратегии отложенной выборки.
hibernate.default_batch_fetch_size
:
Используя пакетную выборку, Hibernate может загружать несколько неинициализированных прокси-серверов при доступе к одному прокси-серверу. Пакетная выборка — это оптимизация стратегии отложенной выборки.
Я также вижу:
hibernate.jdbc.fetch_size
:
Ненулевое значение определяет размер выборки JDBC (вызывает Statement.setFetchSize()).
Достаточно ли умен Hibernate, чтобы заглянуть в кеш второго уровня при пакетной выборке? т.е. Выполняется ли одна выборка для начального вызова ассоциации, а затем следующие вызовы X попадают в кеш? Таким образом, я могу иметь ленивую загрузку, которую хочу, но также часто обращаться к кешу для более объемных транзакций.
Если все содержимое коллекции уже содержится в кеше, будет ли он по-прежнему выполнять запросы на выборку при доступе к коллекции?
Спасибо.