
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
24.11.2012, 13:24:16
|
|||
|---|---|---|---|
FetchType.EAGER для ManyToOne |
|||
|
#18+
Подскажите пожалуйста. Для зависимости OneToMany принято устанавливать fetch = FetchType.LAZY. То есть при загрузке сущности persistence manager не загружает сразу коллекцию, а только при явном обращении к ней. Что по поводу ManyToOne - можно для него ставить fetch = FetchType.EAGER? Например Код: java 1. 2. 3. 4. 5. По идее если мы загружаем Room, то связанную с ним сущность Home загрузить можно и сразу, потому что он один в данном случае. Но если по цепочке у этого Home будет Street, а у Street будет City, а у City будет Country и так далее, и везде будет FetchType.EAGER для ManyToOne - не вызовет это какую то цепную реакцию в базе, что загрузится слишком много в оперативную память? Есть у кого то опыт с такой ситуацией? Может ВСЕГДА ставить FetchType.LAZY ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.11.2012, 14:55:53
|
|||
|---|---|---|---|
|
|||
FetchType.EAGER для ManyToOne |
|||
|
#18+
osonчто по поводу ManyToOne - можно для него ставить fetch = FetchType.EAGER? для ManyToOne EAGER стоит по умолчанию. А вообще это зависит от того какие у вас объекты, насколько большим получится дерево объектов, и как часто вы ими будете пользоваться. То есть - все индивидуально. Рекомендации : http://docs.jboss.org/hibernate/annotations/3.5/reference/en/html_single/ The recommanded approach is to use LAZY on all static fetching definitions and override this choice dynamically through JP-QL. JP-QL has a fetch keyword that allows you to override laziness when doing a particular query. This is very useful to improve performance and is decided on a use case to use case basis. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.11.2012, 17:35:17
|
|||
|---|---|---|---|
FetchType.EAGER для ManyToOne |
|||
|
#18+
Такой вот вопрос если можно. Например у нас зависимость обозначена как LAZY в конфиге. Теперь мы находимся в service методе, который обозначен как Transactional - То есть транзакция открывается перед первым оператором метода и закрывается после его выполнения (правильно?). Если у нас внутри метода есть запрос - из вашей ссылки - Код: java 1. Разве это не то же самое, что и Код: java 1. То есть если мы внутри транзакции, то вызов book.chapters через точку будет действовать точно также как book JOIN FETCH book.chapters - или нет? (Я имею ввиду конечно не то, что он возвращает в первом случае book, а во втором book.chapters) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.11.2012, 17:36:16
|
|||
|---|---|---|---|
FetchType.EAGER для ManyToOne |
|||
|
#18+
очепятка Код: java 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.11.2012, 17:37:29
|
|||
|---|---|---|---|
FetchType.EAGER для ManyToOne |
|||
|
#18+
Ссылочка не совсем ваша :) Вот она http://eubauer.de/kingsware/2011/02/10/override-fetch-type-in-jpql-queries/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=59&tablet=1&tid=2130491]: |
0ms |
get settings: |
13ms |
get forum list: |
23ms |
check forum access: |
7ms |
check topic access: |
7ms |
track hit: |
38ms |
get topic data: |
14ms |
get forum data: |
5ms |
get page messages: |
68ms |
get tp. blocked users: |
3ms |
| others: | 320ms |
| total: | 498ms |

| 0 / 0 |
