169 похожих чатов

Всем привет. Подскажите, пожалуйста, как можно улучшить данный код? studentJPARepository.findAll() -

тут достаю все значения из бд. По идее это плохая практика.
На названия вроде XXX не смотрите, они были изменены

ArrayList<StudentType> studentType = type.getStudentType();

List<Student> studentList= studentJPARepository.findAll()
.stream()
.filter(student-> {
for (StudentType : studentType ) {
switch (type.getValue()) {
case "XXX":
if (student.worksAsXXX()) return true;
break;
case "YYY":
if (student.worksAsYYY()) return true;
break;
case "ZZZ":
if (student.worksAsZZZ()) return true;
break;
case "HHH":
if (Boolean.TRUE.equals(student.getIsHHH())) return true;
break;
}
}
return false;
})
.distinct()
.toList();

22 ответов

40 просмотров

какая исходная задача отфильтровать данные?

Victoria- Автор вопроса
Nickelodeona K
какая исходная задача отфильтровать данные?

В эндпоинте приходит массив со значениями: XXX, YYY, ZZZ (пример). Этих значений нет в бд, но они проверяются с помощью методов worksAsXXX() и т.д. Массив может быть пустым, может содержать все значения

Victoria- Автор вопроса

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

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

это позволит меньше запросов в бд послать?

Victoria- Автор вопроса
Nickelodeona K
так запрос и так один вроде

Ну да, точно. Просто база огромная и мне кажется, что тянуть из базы через findAll() не очень хорошо

Victoria
Ну да, точно. Просто база огромная и мне кажется, ...

ну может можно как-то еще отфильтровать, косвенно из этих worksAsXXX получить что-то для фильтрации на стороне бд

Victoria- Автор вопроса
Nickelodeona K
ну может можно как-то еще отфильтровать, косвенно ...

А @Query запросы прописывать в интерфейсе Repository плохая практика?

Victoria
А @Query запросы прописывать в интерфейсе Reposito...

Нормальная. Где их ещё писать, если не в репозитории?

Victoria- Автор вопроса
Дэни
Нормальная. Где их ещё писать, если не в репозитор...

Так получится, что большую часть логики можно реализовать через @Query - ну именно для работы с бд? А какие подводные камни? К примеру код используется и для веб приложения и для мобильной версии. Я просто в Java и бд не разбираюсь особо, просто помогаю разобраться в легаси коде без документации

Victoria
Так получится, что большую часть логики можно реал...

Подводный камень - перфоманс, что касается любой орм

Victoria
Так получится, что большую часть логики можно реал...

И нет разницы, где ты потом эти данные будешь отображать - в браузере или на мобилке. Бэк-то один

Victoria
В эндпоинте приходит массив со значениями: XXX, YY...

Используйте спецификации и пагинацию

Victoria- Автор вопроса
Dima
Используйте спецификации и пагинацию

Блин, я думала на счет спецификаций, но это очень сложно для меня

Можешь доставть не все значения а только те что нужны. Делать запрос нативный в базе, и собирать в дто

O Z
Можешь доставть не все значения а только те что ну...

там с составлением фильтра проблема)

Nickelodeona K
там с составлением фильтра проблема)

Фильтр есть фильтр у него дело малое ) но важное !

Victoria- Автор вопроса
O Z
Можешь доставть не все значения а только те что ну...

А нужны те, что в фильтре. Но я уже разобралась. Получилось с помощью Query

Dima
Используйте спецификации и пагинацию

А что это за спецификации такие?

Victoria
Блин, я думала на счет спецификаций, но это очень ...

Спецификации больше накостыль похожи, так ещё и не полностью интегрируемые в data jpa

Похожие вопросы

Обсуждают сегодня

Добрый день. Хочу сделать отрисовку по команде на панели. Почему-то рисуется только при втором вызове. С чем может быть связано, не подскажете? procedure TForm1.FormDblClick(...
Kirill Filippenok
20
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Эх кто-то пришел и весь праздник испортил :( You need complex FBX scene importing setup to change things on import? good luck with that. You need navigation and pathfinding? g...
Serg Gini
5
Всем привет! Нужен совет от опытных. Переношу свой проект с Делфи 10.2 Токио на Лазарус 3.2 установленный через инсталлятор fpcupdeluxe-x86_64-win64. При импортировании проект...
Дмитрий Завгородний
2
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Какого хера? /Sources/App/Modules/User/Models/UserLinkApple.swift:21:20: warning: stored property '_id' of 'Sendable'-conforming class 'UserLinkApple' is mutable @ID(...
Alexander Sherbakov
14
Привет всем. Подскажите где можно посмотреть, какая версия электрон, поддерживает версии windows? Некий changelog. Мне бы желательно, поддержку 7,8,10... latest, как понимаю и...
Anonym Squad
21
Почему стало ломаться на D11? "739002.86400000' is not a valid timestamp" function IncDateTime(aStamp:TTimeStamp;aKind:TTriggerKind;aInterval:Integer):TDateTime; //aStamp = 2...
Катерина Свиридова
8
у меня программа тысяч на 10 строк. Там в основном моя собственная логика. А по содержанию она просто работает с файловой системой (мастер для бэкапов) и таблицей с данными о ...
Дмитрий Завгородний
5
У тебя в конфиге нигде нет deny all; или вообще любого deny?
Alexander Sherbakov
10
Карта сайта