Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3] 4   вперед  Ctrl      все
 Re: Новые веяния  [new]
andreykaT
Member

Откуда: Finland
Сообщений: 2955
chpasha
andreykaT
А разве компилятор не упадет если модель поменял а хкл жпкл запрос забыл?
нет конечно, это же строка. парсит ее хибер в рантайме, а не компилятор. Тоже самое касается синтаксически неправильно составленного запроса. IDEA может ругаться и рефакторинг поддерживает, но это очень тонкий лед, ни разу не замена тестам.

да неее.. спринг дата JPQL - точно падает если модель меняется. правда, там сами запросы внутри аннотаций. может спринг дата такой умный. забыл детали уже.
18 июл 20, 19:06    [22169803]     Ответить | Цитировать Сообщить модератору
 Re: Новые веяния  [new]
andreykaT
Member

Откуда: Finland
Сообщений: 2955
Где-то в степи
andreykaT,
Ну а че нет, на подножке проехать,
Вам же не лень, вместо того что бы пройти дальше, тут мне тыкать ))

ну я просто когда то давно имел время общения и работы с ними. поэтому и заинтересовался ))) какое они отношение имеют к топику.
18 июл 20, 19:08    [22169804]     Ответить | Цитировать Сообщить модератору
 Re: Новые веяния  [new]
chpasha
Member

Откуда:
Сообщений: 9552
andreykaT
да неее.. спринг дата JPQL - точно падает

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

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? по-моему нет - как всегда в рантайме. Разве что он их может валидирует сразу при старте
18 июл 20, 19:36    [22169818]     Ответить | Цитировать Сообщить модератору
 Re: Новые веяния  [new]
chpasha
Member

Откуда:
Сообщений: 9552
P. S. ну или если через maven/gradle компилить и там какой-то плагин есть

Сообщение было отредактировано: 18 июл 20, 19:40
18 июл 20, 19:43    [22169821]     Ответить | Цитировать Сообщить модератору
 Re: Новые веяния  [new]
Андрей Панфилов
Member

Откуда: Москва > Melbourne
Сообщений: 3625
chpasha
я смотрю на то и другое, и что происходит во втором случае понимаю не напрягаясь, в отличие от первого. добавь еще 3-4 джоина с условиями и дело только усугубится
Джойны - это какая-то страшилка для детей. Скажем так: если у вас в проекте JPA много "джойнов", то это звоночек, что в проекте что-то не так, потому что джойны в JPA нужны довольно редко, например в:

chpasha

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 я наблюдаю одно из двух поведений:
- оно либо жутко начинает тупить
- либо просто зависает

Сообщение было отредактировано: 18 июл 20, 21:36
18 июл 20, 21:33    [22169837]     Ответить | Цитировать Сообщить модератору
 Re: Новые веяния  [new]
chpasha
Member

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

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

Андрей Панфилов
зачем вообще писать нормальный код, если при желании можно любую хрень покрыть тестами?
что есть "нормальный" код? каков критерий? собственно с чего топик и начался. А наличие или отсутствие тестов тут вообще как бы не пришей кобыле хвост. Эта тема всплыла только потому, что ты говоришь, что использование jql это ай-ай-ай потому что нет compile-time проверок - поле таблицы удалили/переименовали и все пропало. А я считаю, что масштаб данной проблемы сильно гипертрофирован.
18 июл 20, 22:03    [22169840]     Ответить | Цитировать Сообщить модератору
 Re: Новые веяния  [new]
chpasha
Member

Откуда:
Сообщений: 9552
Андрей Панфилов
У меня какая-то сборка установлена, и при правке строки похожей на JPQL я наблюдаю одно из двух поведений
ну, поставь какую-нибудь более другую сборку, вдруг повезет
18 июл 20, 22:04    [22169841]     Ответить | Цитировать Сообщить модератору
 Re: Новые веяния  [new]
mirudom
Member

Откуда:
Сообщений: 1106
xerxf
Что это - не понимание сути и попытка впихнуть везде, где только можно свежеполученные знания или реальная необходимость, которой я никак не могу проникнуться?
Уважаемый xerxf,
есть возможность спросить авторов кода ?
19 июл 20, 09:14    [22169903]     Ответить | Цитировать Сообщить модератору
 Re: Новые веяния  [new]
andreykaT
Member

Откуда: Finland
Сообщений: 2955
chpasha
P. S. ну или если через maven/gradle компилить и там какой-то плагин есть

Да, разумеется, мавен градл. А как иначе) падает, точно падает
19 июл 20, 12:00    [22169921]     Ответить | Цитировать Сообщить модератору
 Re: Новые веяния  [new]
chpasha
Member

Откуда:
Сообщений: 9552
andreykaT
падает, точно падает

пробовал?

andreykaT
А как иначе

реально-то такой плагин есть аль нет?

К сообщению приложен файл. Размер - 131Kb
19 июл 20, 14:42    [22169966]     Ответить | Цитировать Сообщить модератору
 Re: Новые веяния  [new]
chpasha
Member

Откуда:
Сообщений: 9552
P. S.
короткий гуглинг говорит, что никакой compile-time валидации hql нет. посылают в criteria api.
вот какую-то самописку только нагуглил
19 июл 20, 14:48    [22169968]     Ответить | Цитировать Сообщить модератору
 Re: Новые веяния  [new]
mad_nazgul
Member

Откуда:
Сообщений: 5395
chpasha
P. S.
короткий гуглинг говорит, что никакой compile-time валидации hql нет. посылают в criteria api.
вот какую-то самописку только нагуглил


IDEA в принципе справляется с валидацией hql, да SQL тоже.
20 июл 20, 08:39    [22170188]     Ответить | Цитировать Сообщить модератору
 Re: Новые веяния  [new]
chpasha
Member

Откуда:
Сообщений: 9552
mad_nazgul
IDEA в принципе справляется с валидацией hql, да SQL тоже

так то да, но это ж просто инспекция, которую можно просто игнорировать и которая может слететь в каком-то обновлении, потому что фасет модуля слетел или смотрит не туда или индексы тово или х.з. еще что. короче nice to have, но не более.
20 июл 20, 15:36    [22170495]     Ответить | Цитировать Сообщить модератору
 Re: Новые веяния  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 17915
mad_nazgul
IDEA в принципе справляется с валидацией hql, да SQL тоже.
а она отслеживает изменения субд? и для всех субд это делается?
или только то что что хибер может?
20 июл 20, 17:06    [22170554]     Ответить | Цитировать Сообщить модератору
 Re: Новые веяния  [new]
mad_nazgul
Member

Откуда:
Сообщений: 5395
вадя
mad_nazgul
IDEA в принципе справляется с валидацией hql, да SQL тоже.
а она отслеживает изменения субд? и для всех субд это делается?
или только то что что хибер может?


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

Поддерживаются почти все СУРБД, для которых есть JDBC + парочка модных NoSQL БД.
21 июл 20, 06:23    [22170794]     Ответить | Цитировать Сообщить модератору
 Re: Новые веяния  [new]
mad_nazgul
Member

Откуда:
Сообщений: 5395
chpasha
mad_nazgul
IDEA в принципе справляется с валидацией hql, да SQL тоже

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


Да.
Но жизнь облегчает.
Как минимум "детские ошибки" труднее сделать.
21 июл 20, 06:24    [22170795]     Ответить | Цитировать Сообщить модератору
 Re: Новые веяния  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 17915
mad_nazgul,

я очень в этом сомневаюсь
судя по тому что есть отличия в mysql 8.19 и 8.20
21 июл 20, 07:29    [22170801]     Ответить | Цитировать Сообщить модератору
 Re: Новые веяния  [new]
chpasha
Member

Откуда:
Сообщений: 9552
mad_nazgul
Как минимум "детские ошибки" труднее сделать.
имхо, самое полезное - это автоподсказка по именам полей и таблиц в процессе написания запроса
21 июл 20, 11:52    [22170908]     Ответить | Цитировать Сообщить модератору
 Re: Новые веяния  [new]
mad_nazgul
Member

Откуда:
Сообщений: 5395
вадя
mad_nazgul,

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


Ну ок. Мне в принципе хватает. :-)
21 июл 20, 12:18    [22170922]     Ответить | Цитировать Сообщить модератору
 Re: Новые веяния  [new]
Zzz79
Member

Откуда:
Сообщений: 569
Лучше любые новые веяния ,чем 10 летнее говно,на котором я сейчас сижу.
Ска спек технологий
свой собственный фремворк+ китайского г0вно ZK + древний спринг
все это построено на каком то адском количестве XML
скрипты проливают тоже своим самописным инструментом

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

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

почему чтобы изменить сцка одну графу в этом дерьме нужно перелопатить миллиарды тонн xml
21 июл 20, 16:11    [22171150]     Ответить | Цитировать Сообщить модератору
 Re: Новые веяния  [new]
dakeiras
Member

Откуда:
Сообщений: 549
автор
Джойны - это какая-то страшилка для детей. Скажем так: если у вас в проекте JPA много "джойнов", то это звоночек, что в проекте что-то не так, потому что джойны в JPA нужны довольно редко

JPA затем только и нужен чтобы джойны делать легче было. Вы путаете с no sql.
22 июл 20, 01:34    [22171367]     Ответить | Цитировать Сообщить модератору
 Re: Новые веяния  [new]
andreykaT
Member

Откуда: Finland
Сообщений: 2955
Zzz79
Лучше любые новые веяния ,чем 10 летнее говно,на котором я сейчас сижу.
Ска спек технологий
свой собственный фремворк+ китайского г0вно ZK + древний спринг
все это построено на каком то адском количестве XML
скрипты проливают тоже своим самописным инструментом

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

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

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

я сейчас попал на проект где такое же вот десятилетнее жее с хмл и прочими кэмелами. просто дождался момента и спрыгнул на новый проект внутри компании где это всё они решили переписать на модном кварке и более "микро" сервисах :)
а так тебя ждет еще много интересного на этой стезе. надеюсь, ты зааплаился на ту работу за в четыре раза больше вместо твоих нынешних 30-ти.
22 июл 20, 09:21    [22171431]     Ответить | Цитировать Сообщить модератору
 Re: Новые веяния  [new]
andreykaT
Member

Откуда: Finland
Сообщений: 2955
dakeiras
автор
Джойны - это какая-то страшилка для детей. Скажем так: если у вас в проекте JPA много "джойнов", то это звоночек, что в проекте что-то не так, потому что джойны в JPA нужны довольно редко

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

я так понимаю, речь о том что джойы сами по себе не плохи но когда их овер-много то они становятся плохи и повод задуматься о твоей доменной модели. хотя, обычно к тому моменту уже поздновато :)
22 июл 20, 09:22    [22171433]     Ответить | Цитировать Сообщить модератору
 Re: Новые веяния  [new]
andreykaT
Member

Откуда: Finland
Сообщений: 2955
...насчет жпкл хкл версус критерии - ну короче, там вроде рекомендуют ими не злоупотреблять.
я видел запросы на критериях размером в 800 строк. с кучей всяких форов ифов и прочего навоза, динамически выстраивающего мегамонстрозапрос по концовке (да и по началу тоже). ну в этом как бы разбираться мягко говоря не очень. что-то добавлять убирать править. адок. это к вопросу о злоупотреблениях. мое личное имхо - жпкл все же понятнее и лаконичнее.
22 июл 20, 09:29    [22171439]     Ответить | Цитировать Сообщить модератору
 Re: Новые веяния  [new]
dakeiras
Member

Откуда:
Сообщений: 549
andreykaT
dakeiras
пропущено...

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

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

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

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

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


Чтож. Зато знает что simpledateformat потоконебезопасен.
22 июл 20, 14:08    [22171702]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3] 4   вперед  Ctrl      все
Все форумы / Java Ответить