Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Можно ли использовать FetchType.EAGER?


Автор: oson 24.11.2012, 12:26
Подскажите пожалуйста.
Для зависимости OneToMany принято устанавливать fetch = FetchType.LAZY. То есть при загрузке сущности persistence manager не загружает сразу коллекцию, а только при явном обращении к ней.

Что по поводу ManyToOne - можно для него ставить fetch = FetchType.EAGER?

Например

Код

class Room
{
   @ManyToOne (fetch = FetchType.EAGER)
    House house;
}



По идее если мы загружаем Room, то связанную с ним сущность Home загрузить можно и сразу, потому что он один в данном случае. Но если по цепочке у этого Home будет Street, а у Street будет City, а у City будет Country и так далее, и везде будет FetchType.EAGER для ManyToOne - не вызовет это какую то цепную реакцию в базе, что загрузится слишком много в оперативную память? 
Есть у кого то опыт с такой ситуацией? 
Может ВСЕГДА ставить FetchType.LAZY ?

Автор: zergi 24.11.2012, 14:48
Лучше всегда ставить LAZY, иначе даже когда вам нужен будет только Room, все равно будет вытягиваться вся эта бодяга, по умолчанию.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)