Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопрос по EJB3 / 8 сообщений из 8, страница 1 из 1
29.03.2006, 12:01
    #33631783
BlackWall
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по EJB3
Возник следующий вопрос. Если 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
29.03.2006, 12:09
    #33631811
funikovyuri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по EJB3
см. FetchType

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

>а FetchType.EAGER - это не использование outer-join, а пресловутый N+1 запрос. (которого избегаем outer-join ом для первой ассоциации в классе при условии, что хибер на это настроен (по умолч))
...
Рейтинг: 0 / 0
30.03.2006, 12:45
    #33634777
BlackWall
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по EJB3
Код: 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
30.03.2006, 16:48
    #33635755
expp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по EJB3
я с Хибером ниразу, только с EJB3.0
вот там так - если убрать hibernate.max_fetch_depth в 0,
то аннотация fetch=FetchType.EAGER это
стопудово N+1.

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


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