powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопрос по EJB3
8 сообщений из 8, страница 1 из 1
Вопрос по EJB3
    #33631783
BlackWall
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возник следующий вопрос. Если EJB3 стал ориентирован на использование POJO, то в сравнении с Hibernate как обеспечивается работа с lazy-initialized коллекциями или объектами? Скажем, есть классы A и B:
Код: plaintext
1.
2.
3.
4.
5.
 public   class  A {
     public  List<B> bs;
}
 public   class  B {
}
Есть ли возможность загружать объект A без bs, вернее создавать для bs прокси? Будет ли прокси загружать реальные объекты из БД при обращении к нему?
...
Рейтинг: 0 / 0
Вопрос по EJB3
    #33631811
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
см. FetchType

Код: plaintext
@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.EAGER)
...
Рейтинг: 0 / 0
Вопрос по EJB3
    #33632187
BlackWall
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
EAGER - это использование outer-join, по крайней мере в Hibernate. Стоит вопрос, удасться ли инициализировать незагруженные объекты удаленно. Вызовет ли обращение к прокси обращение к контейнеру для загрузки? В Hibernate задача нетривиальна, поскольку закрытие сессии (Session) означает отсоединение от нее объектов -> LazyInitializationException. В принципе (как я понимаю), возможно прикрепление объекта к сессии, но потребуются наворачивать слой сервисов или DAO дополнительным кодом. Вот и спрашиваю, как это работает в EJB3. Может, кто знает.
...
Рейтинг: 0 / 0
Вопрос по EJB3
    #33632888
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нет, все что будет использоваться должно быть загружено пока сессия жива, FetchType позволяет управлять "границей" графа, который будет загружен
...
Рейтинг: 0 / 0
Вопрос по EJB3
    #33632906
expp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зад точно таких же размеров.
ставим FetchType.LAZY пересылаем в другую, JVM , обращаемся -- БА-БАХ.
для избегания перед засылом a.bs.size() (обычно выбирает коллекцию и всё в поряде)
а если это полиморфная ассоциация то
for(В b : a.bs)
b.getBlaBlaBla();
только так прокси пофетчит.

>а FetchType.EAGER - это не использование outer-join, а пресловутый N+1 запрос. (которого избегаем outer-join ом для первой ассоциации в классе при условии, что хибер на это настроен (по умолч))
...
Рейтинг: 0 / 0
Вопрос по EJB3
    #33634777
BlackWall
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
 package  org.hibernate;
...
 public   final   class  FetchMode  implements  Serializable {
...
        /**
         * Fetch using an outer join. Equivalent to <tt>fetch="join"</tt>.
         */
         public   static   final  FetchMode JOIN =  new  FetchMode("JOIN");
...
        /**
         * Fetch eagerly, using an outer join. Equivalent to
         * <tt>outer-join="true"</tt>.
         * @deprecated use <tt>FetchMode.JOIN</tt>
         */
         public   static   final  FetchMode EAGER = JOIN;
...
...
Рейтинг: 0 / 0
Вопрос по EJB3
    #33635755
expp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я с Хибером ниразу, только с EJB3.0
вот там так - если убрать hibernate.max_fetch_depth в 0,
то аннотация fetch=FetchType.EAGER это
стопудово N+1.

если же это точно, outer join, то представьте если у вас две или
три таких ассоциации - это будет несколько джойнов запросе,
это будет ну очень много строчков
...
Рейтинг: 0 / 0
Вопрос по EJB3
    #33636919
BlackWall
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Много строчков - это слабо сказано, в Far на 30 строк (80 символов в строке) бывает завернет.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопрос по EJB3
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]