Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / hiber n+1? / 10 сообщений из 10, страница 1 из 1
09.07.2016, 13:05
    #39271076
natanabrahamjr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
hiber n+1?
в общем, попросили глянуть код. там есть несколько обращений к базе. на первом же обращении к репо хибер сыпет 15тью селектами. ))

высыпает на строчке someRepository.findAll(someSpecification, somePageable) т.е. то, что идет из стандартного интерфейса.

собссно что делать то емае )) там и крутить то вроде нечего. я так понимаю, засада именно в дизайне базы. но... пробовал играться с игер-лейзи зависимостями в базе - что-то эффекта особо не достиг, ну да на пару запросов меньше стало.

пытался переписать поверх интерфейса @Query, но что то так и не разобрался как с джойн фетч работать. да и всё-равно не выйдет нормально, т.к. в этом случае пейджбл оно цепляет, а спецификацию уже нет.

я так понимаю, всё?
...
Рейтинг: 0 / 0
09.07.2016, 14:45
    #39271096
no56892
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
hiber n+1?
Добывать метод репозитории в кот jpql + joinfetch
...
Рейтинг: 0 / 0
09.07.2016, 17:44
    #39271132
natanabrahamjr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
hiber n+1?
no56892,

угу..

Код: java
1.
2.
3.
interface .....
@Query("select e from SomeEntity e")
Page<?> someMethod(Specification<?> s, Pageable p)



не хочет подцеплять спецификацию... а спека сложная для воспроизведения в квери.

и второй вопрос не разобрался в джойн фетче

у меня есть ентити скажем Коробка, в ентити коробка есть лист Товар.

я пишу select k from Korobka k join fetch Tovar t

он ругается типа нет в селекте обращения к фетчу. бред какой то.
...
Рейтинг: 0 / 0
09.07.2016, 18:38
    #39271141
no56892
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
hiber n+1?
Select distinct k from korobka k left join fetch k.tovar
...
Рейтинг: 0 / 0
09.07.2016, 19:08
    #39271150
natanabrahamjr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
hiber n+1?
точно. именнно так и делал. только без дистинкта.
...
Рейтинг: 0 / 0
09.07.2016, 19:55
    #39271178
natanabrahamjr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
hiber n+1?
и еще вопрос: я могу так делать, как выше написано, при этом подключая спецификацию к методу? пейджбл работает. а со спекой или нет или я что то не то делаю ))) переносить спеку в квери - это катастрофа. погуглил - нигде такого варианта не нашел. или так нельзя. или так никто не делал.
...
Рейтинг: 0 / 0
11.07.2016, 10:26
    #39271627
Atum1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
hiber n+1?
natanabrahamjr,

Добро пожаловать в Мир ОРМ и Spring Data :)

Если коротко то да использовать как уже сказали jpql + joinfetch

+ Specification вы можете добавлять все что хотите и так же их объединять через and /or

Specification - сильный инструмент для фильтров и поиска ...

подумайте как завернуть весь ваш запрос в Specification ?! вместе с Pageable итд

Если хотите разобраться то начните с Видео , но тут, скорее всего, не будет ответа на ваш вопрос ... это лишь базовые знания :)

[spoiler]
YouTube Video
...
Рейтинг: 0 / 0
11.07.2016, 10:27
    #39271628
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
hiber n+1?
Atum1Если коротко то да использовать как уже сказали jpql + joinfetch

В актуальных версиях JPA/Hibernate есть на много более прогрессивная штука
Fetch Profile/Entity Graph. Рекомендую.
...
Рейтинг: 0 / 0
11.07.2016, 11:23
    #39271654
Atum1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
hiber n+1?
BlazkowiczAtum1Если коротко то да использовать как уже сказали jpql + joinfetch

В актуальных версиях JPA/Hibernate есть на много более прогрессивная штука
Fetch Profile/Entity Graph. Рекомендую.
...
Рейтинг: 0 / 0
11.07.2016, 11:25
    #39271657
Atum1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
hiber n+1?
Atum1Blazkowiczпропущено...

В актуальных версиях JPA/Hibernate есть на много более прогрессивная штука
Fetch Profile/Entity Graph. Рекомендую.

Fetch Profile/Entity Graph а как через них делать фильтр + постраничный вывод ?

(без offfset + limit и order by ? ) = на большом объеме данных такой механизм будет давать тормоза ... нужен будет подзапрос ?!
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / hiber n+1? / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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