powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Новые веяния
25 сообщений из 79, страница 3 из 4
Новые веяния
    #39981367
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT
да неее.. спринг дата JPQL - точно падает

я не специалист по spring data, нашел специально один проектец, где он есть, попробовал

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
public interface AppRepository extends JpaRepository<App, Integer> {

 // неправильное имя поля Name1
    Optional<App> findByName1(@NonNull String appName); 

// неправильное имя поля username1
    @Query("select app from App app where app not in (select permission.app from Users users join users.permissions permission where users.username1 = ?1 and permission.level < ?2)") 
    Slice<App> findAllByPermission(@NonNull String username, @NonNull Permission.Level level, @NonNull Pageable pageable);



ничего не падает. если я ничего не упускаю, то оно может падать в одном единственном случае - если есть annotation processing и генерятся классы в compile time. иначе как это падание по-твоему обеспечивается? спринг data генерит классы в compile time для repository? по-моему нет - как всегда в рантайме. Разве что он их может валидирует сразу при старте
...
Рейтинг: 0 / 0
Новые веяния
    #39981370
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
P. S. ну или если через maven/gradle компилить и там какой-то плагин есть
...
Рейтинг: 0 / 0
Новые веяния
    #39981384
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpasha
я смотрю на то и другое, и что происходит во втором случае понимаю не напрягаясь, в отличие от первого. добавь еще 3-4 джоина с условиями и дело только усугубится
Джойны - это какая-то страшилка для детей. Скажем так: если у вас в проекте JPA много "джойнов", то это звоночек, что в проекте что-то не так, потому что джойны в JPA нужны довольно редко, например в:

chpasha

Код: java
1.
2.
3.
4.
5.
public interface AppRepository extends JpaRepository<App, Integer> {

// неправильное имя поля username1
    @Query("select app from App app where app not in (select permission.app from Users users join users.permissions permission where users.username1 = ?1 and permission.level < ?2)") 
    Slice<App> findAllByPermission(@NonNull String username, @NonNull Permission.Level level, @NonNull Pageable pageable);


"join users.permissions" не нужен - нужно из Permission выбирать, а не из Users (тут еще кто-то класс зачем-то в множественном числе обозвал - нужно срочно переименовывать), а вот анти-джойн NOT IN выглядит вообще крайне подозрительно - что будет в случае если в permission.app NULL?

Андрей Панфилов
как долго проживет такой баг с изменившейся моделью, до первого запуска тестов?

Если настоящих интеграционных тестов нет, то проживет оно сколько угодно долго. Ну и в целом аргументация про наличие тестов так себе: зачем вообще писать нормальный код, если при желании можно любую хрень покрыть тестами?

chpasha
IDEA например умеет поля в jql/hql запросах рефакторить

Кстати очень "полезная" фича. У меня какая-то сборка установлена, и при правке строки похожей на JPQL я наблюдаю одно из двух поведений:
- оно либо жутко начинает тупить
- либо просто зависает
...
Рейтинг: 0 / 0
Новые веяния
    #39981387
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфилов
"join users.permissions" не нужен - нужно из Permission выбирать, а не из Users (тут еще кто-то класс зачем-то в множественном числе обозвал - нужно срочно переименовывать), а вот анти-джойн NOT IN выглядит вообще крайне подозрительно - что будет в случае если в permission.app NULL?
ты пытаешься понять смысла запроса там, где ему быть не обязательно . конкретно этот я выдрал из какого-то бэкенда для acra, который у меня на винте валялся - просто потому что я помню, что там spring data jpa был с @Query, а не потому что там есть join.

Андрей Панфилов
Если настоящих интеграционных тестов нет, то проживет оно сколько угодно долго
[пожимает плечами], ну а если есть, то до первого запуска

Андрей Панфилов
зачем вообще писать нормальный код, если при желании можно любую хрень покрыть тестами?
что есть "нормальный" код? каков критерий? собственно с чего топик и начался. А наличие или отсутствие тестов тут вообще как бы не пришей кобыле хвост. Эта тема всплыла только потому, что ты говоришь, что использование jql это ай-ай-ай потому что нет compile-time проверок - поле таблицы удалили/переименовали и все пропало. А я считаю, что масштаб данной проблемы сильно гипертрофирован.
...
Рейтинг: 0 / 0
Новые веяния
    #39981388
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфилов
У меня какая-то сборка установлена, и при правке строки похожей на JPQL я наблюдаю одно из двух поведений
ну, поставь какую-нибудь более другую сборку, вдруг повезет
...
Рейтинг: 0 / 0
Новые веяния
    #39981447
mirudom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xerxfЧто это - не понимание сути и попытка впихнуть везде, где только можно свежеполученные знания или реальная необходимость, которой я никак не могу проникнуться?Уважаемый xerxf,
есть возможность спросить авторов кода ?
...
Рейтинг: 0 / 0
Новые веяния
    #39981463
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpasha
P. S. ну или если через maven/gradle компилить и там какой-то плагин есть

Да, разумеется, мавен градл. А как иначе) падает, точно падает
...
Рейтинг: 0 / 0
Новые веяния
    #39981498
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT
падает, точно падает

пробовал?

andreykaT
А как иначе

реально-то такой плагин есть аль нет?
...
Рейтинг: 0 / 0
Новые веяния
    #39981499
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
P. S.
короткий гуглинг говорит, что никакой compile-time валидации hql нет. посылают в criteria api.
вот какую-то самописку только нагуглил
...
Рейтинг: 0 / 0
Новые веяния
    #39981634
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpasha
P. S.
короткий гуглинг говорит, что никакой compile-time валидации hql нет. посылают в criteria api.
вот какую-то самописку только нагуглил


IDEA в принципе справляется с валидацией hql, да SQL тоже.
...
Рейтинг: 0 / 0
Новые веяния
    #39981866
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul
IDEA в принципе справляется с валидацией hql, да SQL тоже

так то да, но это ж просто инспекция, которую можно просто игнорировать и которая может слететь в каком-то обновлении, потому что фасет модуля слетел или смотрит не туда или индексы тово или х.з. еще что. короче nice to have, но не более.
...
Рейтинг: 0 / 0
Новые веяния
    #39981917
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul
IDEA в принципе справляется с валидацией hql, да SQL тоже.
а она отслеживает изменения субд? и для всех субд это делается?
или только то что что хибер может?
...
Рейтинг: 0 / 0
Новые веяния
    #39982092
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
mad_nazgul
IDEA в принципе справляется с валидацией hql, да SQL тоже.
а она отслеживает изменения субд? и для всех субд это делается?
или только то что что хибер может?


По идее должна.
Но там все завязано на внутренних индексах IDEA.
Если индексы соединения с БД обновились и изменения из БД подтянулись, то все ок.
В IDEA основная часть функционала работы с БД взята из DataGrip.
(Точнее DataGrip выделили в отдельную IDE для работы с БД из IDEA)

Поддерживаются почти все СУРБД, для которых есть JDBC + парочка модных NoSQL БД.
...
Рейтинг: 0 / 0
Новые веяния
    #39982093
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpasha
mad_nazgul
IDEA в принципе справляется с валидацией hql, да SQL тоже

так то да, но это ж просто инспекция, которую можно просто игнорировать и которая может слететь в каком-то обновлении, потому что фасет модуля слетел или смотрит не туда или индексы тово или х.з. еще что. короче nice to have, но не более.


Да.
Но жизнь облегчает.
Как минимум "детские ошибки" труднее сделать.
...
Рейтинг: 0 / 0
Новые веяния
    #39982097
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul,

я очень в этом сомневаюсь
судя по тому что есть отличия в mysql 8.19 и 8.20
...
Рейтинг: 0 / 0
Новые веяния
    #39982170
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul
Как минимум "детские ошибки" труднее сделать.
имхо, самое полезное - это автоподсказка по именам полей и таблиц в процессе написания запроса
...
Рейтинг: 0 / 0
Новые веяния
    #39982179
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
mad_nazgul,

я очень в этом сомневаюсь
судя по тому что есть отличия в mysql 8.19 и 8.20


Ну ок. Мне в принципе хватает. :-)
...
Рейтинг: 0 / 0
Новые веяния
    #39982467
dakeiras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторДжойны - это какая-то страшилка для детей. Скажем так: если у вас в проекте JPA много "джойнов", то это звоночек, что в проекте что-то не так, потому что джойны в JPA нужны довольно редко
JPA затем только и нужен чтобы джойны делать легче было. Вы путаете с no sql.
...
Рейтинг: 0 / 0
Новые веяния
    #39982504
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zzz79
Лучше любые новые веяния ,чем 10 летнее говно,на котором я сейчас сижу.
Ска спек технологий
свой собственный фремворк+ китайского г0вно ZK + древний спринг
все это построено на каком то адском количестве XML
скрипты проливают тоже своим самописным инструментом

просто ад - дали задачу выпилить из модуля пару настроек
идет второй день - я не могу их найти))

сцка ну почему нельзя использовать нормальную модель данных на нормальном ОРМ где все понято - вот дто и вот таблица под него

почему чтобы изменить сцка одну графу в этом дерьме нужно перелопатить миллиарды тонн xml

я сейчас попал на проект где такое же вот десятилетнее жее с хмл и прочими кэмелами. просто дождался момента и спрыгнул на новый проект внутри компании где это всё они решили переписать на модном кварке и более "микро" сервисах :)
а так тебя ждет еще много интересного на этой стезе. надеюсь, ты зааплаился на ту работу за в четыре раза больше вместо твоих нынешних 30-ти.
...
Рейтинг: 0 / 0
Новые веяния
    #39982506
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dakeiras
авторДжойны - это какая-то страшилка для детей. Скажем так: если у вас в проекте JPA много "джойнов", то это звоночек, что в проекте что-то не так, потому что джойны в JPA нужны довольно редко

JPA затем только и нужен чтобы джойны делать легче было. Вы путаете с no sql.
я так понимаю, речь о том что джойы сами по себе не плохи но когда их овер-много то они становятся плохи и повод задуматься о твоей доменной модели. хотя, обычно к тому моменту уже поздновато :)
...
Рейтинг: 0 / 0
Новые веяния
    #39982511
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...насчет жпкл хкл версус критерии - ну короче, там вроде рекомендуют ими не злоупотреблять.
я видел запросы на критериях размером в 800 строк. с кучей всяких форов ифов и прочего навоза, динамически выстраивающего мегамонстрозапрос по концовке (да и по началу тоже). ну в этом как бы разбираться мягко говоря не очень. что-то добавлять убирать править. адок. это к вопросу о злоупотреблениях. мое личное имхо - жпкл все же понятнее и лаконичнее.
...
Рейтинг: 0 / 0
Новые веяния
    #39982708
dakeiras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT
dakeiras
пропущено...

JPA затем только и нужен чтобы джойны делать легче было. Вы путаете с no sql.

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

я возможно соглашусь с Вами насчёт "овермного=поздновато", хотя оч. сильно зависит от проекта. Это далеко не общее правило.

Но товарищ пишет конкретно:

авторджойны в JPA нужны довольно редко

Чтож. Зато знает что simpledateformat потоконебезопасен.
...
Рейтинг: 0 / 0
Новые веяния
    #39982720
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну ты же не знаешь его специфику проекта может он так удачно всё выстроил что у него в проекте одна или может даже две таблицы.

я сейчас не шучу и не стебусь. но это всё зависит от конкретных задач. может он занимается сбором ро-дата, а потом дальше уже ее подгребает-разгребает-анализирует-считает. там действительно нет причин иметь много джойнов да и вообще джойнов.
...
Рейтинг: 0 / 0
Новые веяния
    #39982792
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zzz79
Лучше любые новые веяния ,чем 10 летнее говно,на котором я сейчас сижу.
Ска спек технологий
свой собственный фремворк+ китайского г0вно ZK + древний спринг
все это построено на каком то адском количестве XML
скрипты проливают тоже своим самописным инструментом

просто ад - дали задачу выпилить из модуля пару настроек
идет второй день - я не могу их найти))

сцка ну почему нельзя использовать нормальную модель данных на нормальном ОРМ где все понято - вот дто и вот таблица под него

почему чтобы изменить сцка одну графу в этом дерьме нужно перелопатить миллиарды тонн xml

Скоро станешь философом. Тогда и эмоции уйдут. Будешь тихо себе сидеть. Читать код.
Писать не будешь. Смысла нет. Пока весь прочитаешь - у тебя отрастёт седая борода.
...
Рейтинг: 0 / 0
Новые веяния
    #39982898
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dakeiras

Но товарищ пишет конкретно:

авторджойны в JPA нужны довольно редко


Чтож. Зато знает что simpledateformat потоконебезопасен.

O_o, тяжелая артиллерия из groovy-некрофилов подтянулась Чет мне кажется что вам не стоило ввязываться в дискуссию по JPA, ибо ваши знания не настолько глубоки как вам могло показаться.
...
Рейтинг: 0 / 0
25 сообщений из 79, страница 3 из 4
Форумы / Java [игнор отключен] [закрыт для гостей] / Новые веяния
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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