Ленивая загрузка и коллекции в Hibernate - PullRequest
3 голосов
/ 18 июля 2011

Если я хочу получить один или несколько элементов (например, 1-й, 3-й и 5-й) из отложенной загруженной коллекции, Hibernate извлечет все элементы из БД и затем вернетте, которые я запрашиваю, или он будет специально извлекать только запрошенные из БД

Ответы [ 3 ]

9 голосов
/ 18 июля 2011

Взгляните на экстра-ленивые коллекции

Но если вам нужны конкретные предметы, просто запрашивайте их, а не берите из коллекции.

6 голосов
/ 19 июля 2011

Альтернативой лишним лени является использование коллекционных фильтров. http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html_single/#objectstate-filtering

Это в основном запрос, основанный на содержании коллекции. И это включает в себя возможности нумерации страниц.

Collection tenKittens = session.createFilter(
    mother.getKittens(), "")
    .setFirstResult(0).setMaxResults(10)
    .list();
0 голосов
/ 18 июля 2011

Я думаю, у вас мало возможностей.Вы можете связать свои результаты с начальным элементом, набрав несколько элементов (например, с нумерацией страниц).Вы также можете написать соответствующий SQL-запрос вместо использования HQL или критериев.Если вы используете дополнительную отложенную коллекцию, Hibernate, вероятно, будет выполнять запрос каждый раз, когда вы получаете элемент из списка.Таким образом, эффективность каждого решения строго зависит от вашего приложения и количества данных в базе данных.

...