|
|
|
JPA: mappedBy генерирует много запросов
|
|||
|---|---|---|---|
|
#18+
Изучаю понемногу JPA, заметил, что при использовании mappedBy, запросов генерируется больше. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Если же в классе User указать связь так: Код: java 1. 2. 3. То трех лишних (по моему мнению) запросов не будет: Код: plaintext 1. 2. 3. 4. Если я все правильно понял, то mappedBy должен наоборот оптимизировать этот момент. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2017, 18:18 |
|
||
|
JPA: mappedBy генерирует много запросов
|
|||
|---|---|---|---|
|
#18+
HettЕсли же в классе User указать связь так: Код: java 1. 2. 3. То наше двухстороннее OneToMany вырождается в OneToOne. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2017, 18:25 |
|
||
|
JPA: mappedBy генерирует много запросов
|
|||
|---|---|---|---|
|
#18+
Я сразу не заметил этого подвоха. А почему так происходит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2017, 18:28 |
|
||
|
JPA: mappedBy генерирует много запросов
|
|||
|---|---|---|---|
|
#18+
user.role_name - сколько ролей у одного юзера? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2017, 18:35 |
|
||
|
JPA: mappedBy генерирует много запросов
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2017, 18:37 |
|
||
|
JPA: mappedBy генерирует много запросов
|
|||
|---|---|---|---|
|
#18+
Hett Код: plaintext 1. 2. 3. Ааа... К черту нормализацию? ОК. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2017, 18:43 |
|
||
|
JPA: mappedBy генерирует много запросов
|
|||
|---|---|---|---|
|
#18+
Это ENUM поля в СУБД, они занимают один байт, какой смысл городить еще третью таблицу. К тому же роли определены в XML конфигах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2017, 18:46 |
|
||
|
JPA: mappedBy генерирует много запросов
|
|||
|---|---|---|---|
|
#18+
HettИзучаю понемногу JPA, заметил, что при использовании mappedBy, запросов генерируется больше.Просто прими как данность, что для отношения @OneToMany, если ты фетчишь сущность со стороны "One", то JPA никак не оптимизирует выборку со стороны "Many". Не умеет этого ни Хибернейт, ни прочие провайдеры. Не нравятся лишние запросы - выбирай отдельными запросами или нативно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2017, 19:19 |
|
||
|
JPA: mappedBy генерирует много запросов
|
|||
|---|---|---|---|
|
#18+
Hett, совершенно не специалист, но наигравшись в двух проектах с jpa, определил для себя ряд вещей: в любой таблице делать сам-по-себе-отдельный-ид, лонг или ууид. понятно, что логин юзера будет уникальный, но лишняя колонка и индекс нынче не очень большой оверхед. отсюда же вытекает ненужность конфигурирования mappedBy, таблицы буду связаны по колонкам ид, в джаве меньше писанины и мусора, будет @ManyToOne private User user; и все. двунаправленые связи не делать вообще, зато не будет рекурсивно циклиться парсер джексона, когда начнешь на этой базе делать веб-сервис, и не придется лепить в сущность еще и джексон аннотации связи делать только со стороны ManyToOne, достать список ролей для юзера чуть сложнее чем готовый лист - в классе-сущности написать простейший запрос на получения ролей по ид юзера, зато скажешь сам себе спасибо за отсутствие кучи промежуточных таблиц, когда будешь писать запрос для какого-нибудь развестистого отчета. послушаем, что скажут специалисты :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2017, 20:19 |
|
||
|
JPA: mappedBy генерирует много запросов
|
|||
|---|---|---|---|
|
#18+
Юрий321, сделал однонаправленную связь, удалил связь на юзера в Role, теперь лишних запросов нет. Просто тогда я не понимаю в чем оптимизация этого mappedBy. BlazkowiczHettЕсли же в классе User указать связь так: Код: java 1. 2. 3. То наше двухстороннее OneToMany вырождается в OneToOne. В общем там ничего не вырождается, это я ошибочку допустил, не по тому полую связал, нужно было делать так: Код: java 1. 2. 3. Просто работало потому, что у одного пользователя совпало имя с названием роли... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2017, 20:29 |
|
||
|
JPA: mappedBy генерирует много запросов
|
|||
|---|---|---|---|
|
#18+
HettПросто тогда я не понимаю в чем оптимизация этого mappedBy http://stackoverflow.com/a/9108618 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2017, 20:53 |
|
||
|
JPA: mappedBy генерирует много запросов
|
|||
|---|---|---|---|
|
#18+
Usman, Видел это, но так и не понял о каких констрейтах говорится. На таблицах у меня нет FK, и все связи прекрасно работают в jpa ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2017, 22:34 |
|
||
|
JPA: mappedBy генерирует много запросов
|
|||
|---|---|---|---|
|
#18+
Constrains - это ограничения (целостности). Ограничения, которые контролирует БД. Можно, разумеется, и без них, но печально будет просветлиться, грохнув родительскую запись и осиротив миллион "деток". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2017, 08:10 |
|
||
|
JPA: mappedBy генерирует много запросов
|
|||
|---|---|---|---|
|
#18+
HettНа таблицах у меня нет FK это плохо. Во первых FK это индексы и быстрота. Во вторых, уже сказали, это последний рубеж защиты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2017, 09:34 |
|
||
|
JPA: mappedBy генерирует много запросов
|
|||
|---|---|---|---|
|
#18+
Я это все прекрасно понимаю, но вопрос тут в другом, оптимизирует ли что-то mappedBy или он только упрощает разработчику жизнь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2017, 09:37 |
|
||
|
JPA: mappedBy генерирует много запросов
|
|||
|---|---|---|---|
|
#18+
авторВо первых FK это индексы и быстрота. Бывают случаи, когда нужный индекс уже включен в состав другого составного индекса. В таком случае созданный FK индекс дает оверхед (получаем полностью обратный эффект). Не знаю как в других СУБД, но в MySQL именно так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2017, 09:41 |
|
||
|
JPA: mappedBy генерирует много запросов
|
|||
|---|---|---|---|
|
#18+
Пока для себя я пришел к выводу, что если обратная связь не нужна, то и создавать ее не стоит, меньше запросов будет. Я изначально думал, что при LAZY загрузке всё действо будет происходить при обращении к связи, а не при инициализации объекта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2017, 09:43 |
|
||
|
JPA: mappedBy генерирует много запросов
|
|||
|---|---|---|---|
|
#18+
Hettв других СУБД в других и Java не так ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2017, 09:47 |
|
||
|
JPA: mappedBy генерирует много запросов
|
|||
|---|---|---|---|
|
#18+
Petro123в других и Java не так JAVA это что, СУБД? Давно? MySQL - при создании FK создает и соответствующий индекс, который в некоторых случаях становится оверхедом, как я уже выше говорил. Тот же MS SQL не создает индекс при создании FK, о какой производительности вообще вы говорите? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2017, 09:54 |
|
||
|
JPA: mappedBy генерирует много запросов
|
|||
|---|---|---|---|
|
#18+
HettПока для себя я пришел к выводу, что если обратная связь не нужна, то и создавать ее не стоит, меньше запросов будет. Я изначально думал, что при LAZY загрузке всё действо будет происходить при обращении к связи, а не при инициализации объекта. Вывод правильный. В данном случае она нафиг не нужна. Список пользователей у которых есть определенная роль будет огромным. В общем же случае, нужно очень хорошо подумать прежде чем создавать двунаправленную ассоциацию в сущностях. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2017, 09:55 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39433310&tid=2123003]: |
0ms |
get settings: |
8ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
49ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
73ms |
get tp. blocked users: |
2ms |
| others: | 206ms |
| total: | 375ms |

| 0 / 0 |
