Может ли Hibernate Embedded Object загружаться лениво? - PullRequest
3 голосов
/ 22 ноября 2011

У меня есть Hibernate Entity, у которого есть несколько встроенных объектов, которые довольно толстые, но редко используются.Я хотел бы сделать внедренные объекты Lazy Loaded, но в идеале я не хотел бы перемещать информацию в отдельные таблицы.

Возможно ли и как аннотировать внедренный объект для ленивой загрузки?

Ответы [ 2 ]

3 голосов
/ 22 ноября 2011

напрямую вы не можете, установив атрибуты в объекте да, вы можете

@Basic(fetch=FetchType.LAZY)

а также вы должны прочитать http://docs.jboss.org/hibernate/core/3.3/reference/en/html/performance.html#performance-fetching-lazyproperties

3 голосов
/ 22 ноября 2011

Как я понял из вашего вопроса, у вас есть большой объект (или таблица), который вы не хотите заполнять всеми свойствами. Вы можете использовать функции проекции запросов HQL или Criteria, как указано здесь .

Вот пример, HQL должно быть,

select new com.foo.Bean(b.prop1,b.prop2,...) from Bean b

Также вам необходимо добавить соответствующий конструктор в класс Bean.

Позвольте мне добавить еще несколько вещей:

  1. lazy в спящем режиме имеет значение, когда он должен извлекать данные из нескольких таблиц.Здесь вы сохраняете дополнительный запрос для получения данных из дополнительных таблиц.Подробнее о настройках lazy здесь .Это может быть неприменимо в вашем случае, так как вы должны извлекать данные только из одной таблицы.

  2. Я не считаю хорошей идеей иметь несколько объектов для представления данныхв той же таблице, только потому, что данные в нескольких столбцах используются редко.

...