fa
Feedback
Java Portal | Программирование

Java Portal | Программирование

رفتن به کانال در Telegram

Присоединяйтесь к нашему каналу и погрузитесь в мир для Java-разработчика Связь: @devmangx РКН: https://clck.ru/3H4WUg

نمایش بیشتر

📈 تحلیل کانال تلگرام Java Portal | Программирование

کانال Java Portal | Программирование (@java_iibrary) در بخش زبانی روسی بازیگری فعال است. در حال حاضر جامعه شامل 11 770 مشترک است و جایگاه 10 256 را در دسته فناوری و برنامه‌ها و رتبه 54 543 را در منطقه روسيا دارد.

📊 شاخص‌های مخاطب و پویایی

از زمان ایجاد در невідомо، پروژه رشد سریعی داشته و 11 770 مشترک جذب کرده است.

بر اساس آخرین داده‌ها در تاریخ 29 اوت, 2026، کانال فعالیت پایداری دارد. در ۳۰ روز گذشته تغییر اعضا برابر -144 و در ۲۴ ساعت گذشته برابر -1 بوده و همچنان دسترسی گسترده‌ای حفظ شده است.

  • وضعیت تأیید: تأیید نشده
  • نرخ تعامل (ER): میانگین تعامل مخاطب 10.09% است و در ۲۴ ساعت نخست پس از انتشار، محتوا معمولاً 5.78% واکنش نسبت به کل مشترکان کسب می‌کند.
  • دسترسی پست‌ها: هر پست به طور میانگین 1 188 بازدید دریافت می‌کند. در اولین روز معمولاً 681 بازدید جمع‌آوری می‌شود.
  • واکنش‌ها و تعامل: مخاطبان به‌طور فعال حمایت می‌کنند؛ میانگین واکنش به هر پست 4 است.
  • علایق موضوعی: محتوا بر موضوعات کلیدی مانند boot, string, void, архитектура, resttemplate تمرکز دارد.

📝 توضیح و سیاست محتوایی

نویسنده این فضا را محل بیان دیدگاه‌های شخصی توصیف می‌کند:
Присоединяйтесь к нашему каналу и погрузитесь в мир для Java-разработчика Связь: @devmangx РКН: https://clck.ru/3H4WUg

به لطف به‌روزرسانی‌های پرتکرار (آخرین داده در تاریخ 30 اوت, 2026)، کانال همواره به‌روز و دارای دسترسی بالاست. تحلیل‌ها نشان می‌دهد مخاطبان به‌طور فعال با محتوا تعامل دارند و آن را به نقطه اثرگذاری مهم در دسته فناوری و برنامه‌ها تبدیل کرده‌اند.

11 770
مشترکین
-124 ساعت
-237 روز
-14430 روز
آرشیو پست ها
Вопросы уровня Easy/Medium на собеседовании по Java 1. Что такое ключевое слово static и где оно используется? Ответ: Статические члены принадлежат классу, а не экземпляру. Можно обращаться к ним без создания объекта. В памяти существует только одна копия. 2. В чём разница между abstract class и interface? Ответ: - Абстрактный класс: может содержать реализации методов, конструкторы, поддерживает одиночное наследование - Интерфейс: начиная с Java 8, может иметь методы по умолчанию, поддерживает множественное наследование, содержит только публичные методы 3. Что такое wrapper-классы и зачем они нужны? Ответ: Это объектные обёртки над примитивами (Integer, Boolean и т. д.). Используются в коллекциях, обобщениях и там, где требуются объекты вместо примитивов. 4. Что делает оператор instanceof? Ответ: Проверяет, является ли объект экземпляром определённого класса или интерфейса. Возвращает boolean. 5. Что такое инкапсуляция и как её реализовать? Ответ: Сокрытие внутреннего состояния и предоставление доступа через методы. Реализуется с помощью приватных полей и публичных геттеров/сеттеров. 6. Что такое абстракция и как она реализуется? Ответ: Сокрытие деталей реализации и упрощение интерфейса. Реализуется через абстрактные классы и интерфейсы. 7. Можно ли переопределить private-метод? Ответ: Нет. Приватные методы недоступны в наследниках, поэтому их нельзя переопределить. 8. Может ли класс быть одновременно abstract и final? Ответ: Нет. abstract означает, что класс предназначен для наследования, а final — что класс нельзя наследовать. 9. Что такое marker-интерфейсы? Ответ: Интерфейсы без методов, используемые как метки. Примеры: Serializable, Cloneable. 10. Что такое diamond problem (проблема ромбовидного наследования)? Ответ: Проблема возникает при множественном наследовании, если класс наследует двух родителей, имеющих общего предка — возникает неоднозначность, какой метод использовать. 11. В чём разница между Collection и Collections? Ответ: - Collection — корневой интерфейс для всех коллекций - Collectionsутилитарный класс с набором статических методов для работы с коллекциями 12. Что такое fail-fast и fail-safe итераторы? Ответ: - Fail-fast: выбрасывает ConcurrentModificationException, если коллекция была изменена во время итерации - Fail-safe: работает с копией коллекции, поэтому не выбрасывает исключений 👉 Java Portal

Repost from 1337
🎉 Большой розыгрыш от крупнейшего IT-медиа 1337, легендарного паблика Рифмы и Панчи, канала Техно. Победителей будет много,
🎉 Большой розыгрыш от крупнейшего IT-медиа 1337, легендарного паблика Рифмы и Панчи, канала Техно. Победителей будет много, а для участия нужны лишь пара кликов: 1. Подписаться на Рифмы и Панчи, 1337 и на Техно. 2. Нажать «Участвовать» под этим постом Что по призам:
1 место - Iphone 16 Pro 2 место - PS5 Slim 3 место - Nintendo Switch 2 4-10 места - 10 000 рублей на карту
Победителей определим 21 июля в 18:00 МСК. Всем удачи!

Совет дня: Проверка (assert) одиночного объекта против List в ответах при использовании MockMvcTester в Spring. - Первый блок
Совет дня: Проверка (assert) одиночного объекта против List<Object> в ответах при использовании MockMvcTester в Spring. - Первый блок проверяет, что по /api/posts/1 возвращается Post, у которого title равен "Post title here" - Второй блок проверяет, что по /api/posts приходит список из 4 элементов типа Post 👉 Java Portal

Кто не в курсе: Spring Debugger — это инструмент в IntelliJ IDEA, который помогает разбираться в контексте Spring Boot-приложения. Прямо в проекте можно: 🔸посмотреть список загруженных и неактивных бинов, 🔸проверить значения конфигурационных свойств, 🔸увидеть детали подключения к базе. Удобно для дебага, особенно когда неясно, почему бин не поднялся или почему конфигурация работает не так, как ожидалось. 👉 Java Portal

📢 Выходцы из Jetbrains запилили годноту для Java/Kotlin-разработчиков. Стартап называется ❇️ Explyt. Они только что выкатили
📢 Выходцы из Jetbrains запилили годноту для Java/Kotlin-разработчиков.   Стартап называется ❇️ Explyt. Они только что выкатили мощный релиз.  Вкратце: это плагин в IDE, который сам генерирует тесты с интересными возможностями:  ✔️ Vibe debugging. За счет интеграции с IDE, плагин собирает данные по исполнению программы и генерирует тест по этим данным, что экономит время на тестировании и отлавливает ошибки на 80-90% (!)  ✔️ Агентский режим. Ассистент, который живёт в проекте и следит за покрытием, сам находит незакрытые места и предлагает тесты. Работает в фоне, как часть команды.  👉 Кому интересно - вот ссылка на релиз и установку плагина

Мини руководство по паттернам проектирования 🔸Singleton Реализация: статический экземпляр + приватный конструктор Пример: ло
Мини руководство по паттернам проектирования 🔸Singleton Реализация: статический экземпляр + приватный конструктор Пример: логгер, менеджер конфигурации, пул подключений к БД 🔸Factory Реализация: метод create(String type) возвращает нужный подкласс Пример: парсеры файлов (.json, .xml), отправка уведомлений 🔸Abstract Factory Реализация: интерфейс для создания связанных объектов без указания их классов Пример: UI-темы (тёмная/светлая), фабрики виджетов операционной системы 🔸Builder Реализация: цепочка вызовов .set() + .build() Пример: создание сложных объектов, например HTTP-запросов 🔸Prototype Реализация: клонирование существующего объекта через .clone() Пример: игровые персонажи, шаблоны документов, клоны интерфейсов 🔸Strategy Реализация: интерфейс + метод setStrategy() Пример: алгоритмы сортировки, платёжные процессоры 🔸Observer Реализация: список подписчиков + цикл notifyAll() Пример: система событий, UI-слушатели, подписки на YouTube 🔸Decorator Реализация: обёртка над объектом + добавление поведения на лету Пример: логгирование, сжатие, кэширование 🔸Adapter Реализация: класс-обёртка, преобразующий интерфейс Пример: интеграция с легаси API, InputStreamReader 🔸Facade Реализация: один класс делегирует вызовы нескольким подсистемам Пример: java.util.logging, фасад медиаплеера 🔸Command Реализация: инкапсуляция действия в объект с методом execute() Пример: Undo/Redo, обработка нажатий кнопок 🔸Chain of Responsibility Реализация: каждый обработчик решает — обработать или передать дальше Пример: эскалация тикетов в техподдержке, всплытие событий (event bubbling) 🔸Template Method Реализация: базовый класс задаёт общий алгоритм, подклассы переопределяют шаги Пример: обработка онлайн-заказа — оплата → подтверждение → доставка 🔸State Реализация: поведение определяется текущим объектом состояния Пример: состояния медиаплеера — воспроизведение/пауза/стоп 🔸Mediator Реализация: центральный объект управляет взаимодействием компонентов Пример: менеджер чата, валидация форм в UI 🔸Memento Реализация: сохранение и восстановление внутреннего состояния объекта Пример: история изменений, снапшоты состояния в текстовом редакторе 🔸Visitor Реализация: внешний класс выполняет операции над элементами структуры Пример: обход файловой системы, обработка AST 🔸Proxy Реализация: обёртка над реальным объектом для контроля доступа или производительности Пример: ленивая загрузка, контроль доступа, удалённые прокси 🔸Composite Реализация: древовидная структура, где элементы и группы обрабатываются одинаково Пример: иерархия файлов и папок, UI-компоненты 🔸Flyweight Реализация: повторное использование объектов с общим внутренним состоянием Пример: глифы шрифта, иконки интерфейса, текстуры в играх 🔸Bridge Реализация: разделение абстракции и реализации Пример: представление UI → движок отрисовки (SVG, Canvas и т.д.) 👉 Java Portal

Spring Boot + Swagger Документирование API без лишней головной боли. Полное руководство читай здесь: тык 👉 Java Portal
Spring Boot + Swagger Документирование API без лишней головной боли. Полное руководство читай здесь: тык 👉 Java Portal

Модернизация алгоритмов: От наивного → оптимального 🔸Two Sum (пара с заданной суммой) Наивно: O(n²) — двойной цикл Оптимальн
Модернизация алгоритмов: От наивного → оптимального 🔸Two Sum (пара с заданной суммой) Наивно: O(n²) — двойной цикл Оптимально: O(n) с использованием HashMap 🔸Find Duplicate Number (найти дубликат, 1 ≤ num ≤ n) Наивно: HashSet или дополнительная память Оптимально: Обнаружение цикла Флойда (O(1) по памяти) 🔸Kth Largest Element (k-й по величине элемент) Наивно: Сортировка массива (O(n log n)) Оптимально: QuickSelect (в среднем O(n)) или куча (Heap) 🔸Longest Palindromic Substring (длиннейшая палиндромная подстрока) Наивно: O(n³) — перебор всех подстрок Оптимально: Расширение из центра (Expand Around Center, O(n²)), или алгоритм Манакера (O(n)) 🔸Max Subarray Sum (максимальная сумма подмассива) Наивно: Генерация всех подмассивов Оптимально: Алгоритм Кадане (Kadane’s Algorithm, O(n)) 🔸All Pairs Shortest Paths (кратчайшие пути между всеми вершинами) Наивно: Запускать Dijkstra для каждой вершины Оптимально: Алгоритм Флойда–Уоршелла (Floyd-Warshall, O(V³)), эффективен для плотных графов 🔸Median in Data Stream (медиана в потоке данных) Наивно: Сортировать после каждой вставки Оптимально: Две кучи (Min Heap и Max Heap), вставка за O(log n) 🔸Valid Anagram (анаграмма?) Наивно: Сортировка строк Оптимально: Подсчёт частот символов в массиве (O(n)) 🔸Permutations (перестановки) Наивно: Сгенерировать и сохранить все перестановки Оптимально: Рекурсивный Backtracking с отсечениями 🔸Subset Sum Exists (проверка, существует ли сумма из подмножества) Наивно: Перебор всех подмножеств (2ⁿ) Оптимально: Динамическое программирование — снизу вверх или с мемоизацией 🔸Product of Array Except Self (произведение всех кроме текущего) Наивно: Умножать все кроме текущего, O(n²) Оптимально: Префикс + суффикс произведения (O(n)) 🔸Shortest Unsorted Subarray (самый короткий несортированный подмассив) Наивно: Сортировка и сравнение Оптимально: Два указателя для границ (O(n)) 🔸Min Window Substring (минимальная подстрока с нужными символами) Наивно: Перебор всех подстрок Оптимально: Sliding Window + HashMap, O(n) 🔸Search in Rotated Array (поиск в повернутом массиве) Наивно: Линейный поиск Оптимально: Модифицированный бинарный поиск 🔸Count Inversions (подсчёт инверсий) Наивно: Вложенные циклы, O(n²) Оптимально: Модифицированный Merge Sort, O(n log n) 🔸Check if Tree is Balanced (проверка сбалансированности дерева) Наивно: Пересчитывать высоту на каждом шаге Оптимально: Один проход — возвращаем высоту и статус баланса 🔸Merge k Sorted Lists (слияние k отсортированных списков) Наивно: Объединить всё и отсортировать Оптимально: Слияние k списков через Min Heap, O(N log k) 🔸Longest Consecutive Sequence (длиннейшая последовательность чисел) Наивно: Сортировка и проход Оптимально: HashSet + сканирование, O(n) 🔸Word Ladder (преобразование слов) Наивно: BFS от каждого слова Оптимально: Предобработка + двусторонний BFS 🔸Number of Islands (количество островов) Наивно: DFS без отметок Оптимально: DFS/BFS/Union-Find с отслеживанием посещённых клеток 👉 Java Portal

Запрос Hibernate WITH RECURSIVE ⏩Читать подробнее 👉 Java Portal | #cтатья
Запрос Hibernate WITH RECURSIVE ⏩Читать подробнее 👉 Java Portal | #cтатья

Algorithmic Thinking Patterns 🔸Паттерн: Two Pointers Суть идеи: Ввести два индекса и двигать их по массиву Когда использовать: Отсортированные массивы, удаление дубликатов, реверс Типовые задачи: Reverse array in-place, 3Sum, Remove Duplicates 🔸Паттерн: Sliding Window Суть идеи: Оптимизация задач на подмассивы путём расширения/сжатия окна Когда использовать: Строки, макс/мин в окне, шаблоны фиксированной длины Типовые задачи: Longest substring w/o repeats, Max sum of k-size subarray 🔸Паттерн: Binary Search on Answer Суть идеи: Вместо поиска элемента ищем min/max значение, удовлетворяющее условию Когда использовать: Монотонное пространство поиска Типовые задачи: Min eating speed, Aggressive cows, Capacity to ship packages 🔸Паттерн: Prefix Sum / Difference Array Суть идеи: Предобработка для ответов на запросы за O(1) Когда использовать: Сумма/частота на интервалах, перекрывающиеся диапазоны Типовые задачи: Subarray sum = K, Difference array for range updates 🔸Паттерн: Greedy Суть идеи: Выбираем на каждом шаге локально лучший вариант, надеясь на глобальный оптимум Когда использовать: Когда выбор можно отсортировать или сравнить Типовые задачи: Activity selection, Gas Station, Jump Game 🔸Паттерн: Backtracking Суть идеи: Перебираем все варианты и откатываемся с неверных путей Когда использовать: Комбинации, перестановки, ограничения Типовые задачи: N-Queens, Sudoku Solver, Subset Sum 🔸Паттерн: Bitmasking Суть идеи: Используем биты для представления подмножеств или флагов Когда использовать: Маленькие N (N ≤ 20), переключаем состояния Типовые задачи: Count set bits, Subset sum, Traveling Salesman 🔸Паттерн: Union-Find (DSU) Суть идеи: Эффективно объединяем и находим компоненты Когда использовать: Связность, обнаружение циклов Типовые задачи: Number of Provinces, Kruskal's MST, Friend Circles 🔸Паттерн: Monotonic Stack / Queue Суть идеи: Поддерживаем монотонно возрастающую или убывающую структуру Когда использовать: Следующий больше/меньше, максимум по диапазону Типовые задачи: Daily Temperatures, Largest rectangle in histogram 🔸Паттерн: Topological Sort Суть идеи: Линейный порядок задач по зависимостям Когда использовать: Ацикличные графы (DAG), планирование Типовые задачи: Course Schedule, Build Order, Alien Dictionary 🔸Паттерн: Dynamic Programming (Tabulation) Суть идеи: Итеративное решение снизу вверх с мемоизацией Когда использовать: Пересекающиеся подзадачи Типовые задачи: 0/1 Knapsack, Edit Distance, House Robber 🔸Паттерн: Divide & Conquer Суть идеи: Рекурсивное деление входных данных Когда использовать: Сортировка, сложные рекурсии Типовые задачи: Merge Sort, Count Inversions, Median of Two Sorted Arrays 🔸Паттерн: DFS with Memoization Суть идеи: Сохраняем уже посчитанные значения, чтобы не вычислять повторно Когда использовать: DAG, рекурсивное ДП Типовые задачи: Word Break, Unique Paths III, Longest Increasing Path 🔸Паттерн: Meet in the Middle Суть идеи: Делим массив пополам, решаем обе части и объединяем Когда использовать: N ≤ 40, полный перебор слишком дорог Типовые задачи: Partition to Equal Sum, K-Sum Variants 🔸Паттерн: Trie-Based Search Суть идеи: Деревья префиксов Когда использовать: Поиск слов, автодополнение Типовые задачи: Implement Trie, Replace Words, Word Squares 🔸Паттерн: Segment Tree / BIT Суть идеи: Эффективные запросы и обновления на диапазонах Когда использовать: Большие массивы, частые модификации Типовые задачи: Range sum/min/max, Inversions, Lazy Propagation 🔸Паттерн: Floyd’s Cycle Detection Суть идеи: Обнаружение цикла с быстрым и медленным указателями Когда использовать: Связные списки, конечные автоматы Типовые задачи: Linked List Cycle, Happy Number 👉 Java Portal

Лучший способ использовать аннотацию Spring Transactional ⏩Читать подробнее 👉 Java Portal | #cтатья
Лучший способ использовать аннотацию Spring Transactional ⏩Читать подробнее 👉 Java Portal | #cтатья

👩‍💻 Ищем Java разработчиков. Удалёнка, релокейт платим много! Специально для Вас, собираем лучшие вакансии для Java разрабо
👩‍💻 Ищем Java разработчиков. Удалёнка, релокейт платим много! Специально для Вас, собираем лучшие вакансии для Java разработчиков с прямыми контактами в Telegram на канале @it_match_java Подпишись чтобы не упустить свой шанс получить лучший оффер! ➡️ Посмотреть вакансии

Проект на Spring Boot + Spring AI + OpenAI. Он принимает текст или файл с заметками встречи и автоматически генерирует JSON-тикеты с классификацией (баг, фича и т.д.). Теперь в open source: чистый код и готовность к импорту в JIRA. GitHub: https://github.com/ayushstwt/smart-ticket-ai.git 👉 Java Portal

Лучшие практики для микросервисов 1. Отдельное хранилище данных 🔸Каждый микросервис должен использовать свою собственную баз
Лучшие практики для микросервисов 1. Отдельное хранилище данных 🔸Каждый микросервис должен использовать свою собственную базу данных, чтобы обеспечить изоляцию данных и слабую связанность. 2. Единый уровень зрелости кода 🔸Старайтесь поддерживать код всех сервисов примерно на одинаковом уровне зрелости (тестируемость, покрытие, качество). 3. Отдельная сборка для каждого микросервиса 🔸У каждого сервиса должна быть своя сборочная цепочка (CI/CD pipeline), чтобы обеспечить независимость деплоя. 4. Принцип единственной ответственности 🔸Один сервис — одна бизнес-задача. Не смешивайте домены и обязанности в рамках одного микросервиса. 5. Развёртывание в контейнерах 🔸Используйте контейнеры (например, Docker) для упаковки и запуска каждого микросервиса независимо. 6. Обрабатывайте серверы как статeless 🔸Сервисы не должны хранить состояние между запросами. Состояние — либо в БД, либо во внешнем хранилище. 7. Domain-Driven Design (DDD) 🔸Стройте архитектуру на основе бизнес-домена: делите систему на логически обоснованные сервисы, а не технические модули. 8. Микрофронтенд 🔸Разделяйте frontend-приложения по тому же принципу, что и backend: независимые фронты взаимодействуют через API Gateway. 9. Оркестрация микросервисов 🔸Используйте системы оркестрации (например, Kubernetes), чтобы управлять масштабированием, деплоем и связью между сервисами. 👉 Java Portal

Spring Boot Actuator это мощный набор инструментов в составе Spring Boot, который помогает мониторить и управлять приложением
Spring Boot Actuator это мощный набор инструментов в составе Spring Boot, который помогает мониторить и управлять приложением в продакшене. Он предоставляет доступ к различным endpoint'ам, через которые можно получить информацию о внутреннем состоянии приложения - метрики, окружение, дампы потоков и т.д. Что даёт Actuator: - статус, метрики, окружение и прочее - Поддержка мониторинга и управления через HTTP, JMX или кастомные endpoint'ы - Повышенная наблюдаемость, особенно в связке с Prometheus, Grafana, Micrometer или Spring Boot Admin Часто используемые endpoint'ы: 🔸/actuator/health Показывает статус работоспособности приложения Доступ по умолчанию: Public 🔸/actuator/info Выводит информацию из application.properties Доступ по умолчанию: Public 🔸/actuator/metrics Показывает различные метрики производительности Доступ по умолчанию: Restricted 🔸/actuator/env Показывает переменные окружения Доступ по умолчанию: Restricted 🔸/actuator/beans Показывает все Spring Beans Доступ по умолчанию: Restricted 🔸/actuator/threaddump Дамп потоков приложения Доступ по умолчанию: Restricted 🔸/actuator/loggers Просмотр или изменение уровней логирования на лету Доступ по умолчанию: Restricted 🔸/actuator/heapdump Скачивание heap dump Доступ по умолчанию: Restricted 🔸/actuator/prometheus Метрики в формате Prometheus (если подключён micrometer-registry-prometheus) Доступ по умолчанию: Public 👉 Java Portal

Лучшие практики работы с транзакциями Spring ⏩Читать подробнее 👉 Java Portal | #cтатья
Лучшие практики работы с транзакциями Spring ⏩Читать подробнее 👉 Java Portal | #cтатья

Жара в IT! Теперь популярные языки программирования можно легко выучить по гайдам в картинках Бесплатные инструменты, полезны
+4
Жара в IT! Теперь популярные языки программирования можно легко выучить по гайдам в картинках Бесплатные инструменты, полезные ресурсы, а также советы и задачки. Выбирай нужное направление и учись не напрягаясь: 👩‍💻 Linux Ninja 🖥 CodHub | Курсы IT 📱 Python | Программирование 😷 Hacking | Кибербезопасность ⚙️ Webdev | Backend & Frontend 🖥 Программирование по мемам

Зачем использовать `@ConditionalOnProperty`? - Включение или отключение бинов и конфигураций на основе значений в `applicatio
Зачем использовать `@ConditionalOnProperty`? - Включение или отключение бинов и конфигураций на основе значений в `application.properties` без изменения кода - Загрузка разных бинов для разных сред с помощью конфигурационных параметров - Исключение лишних бинов снижает потребление памяти и упрощает логику 🔸Включить бин, если свойство существует: Используется аннотация @ConditionalOnProperty(name="my.prop"). Бин будет создан, если свойство my.prop существует и его значение не "false". 🔸Включить бин, если свойство равно определённому значению: Добавляется параметр havingValue="yes". Бин будет создан только в том случае, если значение свойства строго равно "yes". 🔸Включить бин, если свойство отсутствует: Используется параметр matchIfMissing=true. Бин будет создан даже в случае, если соответствующее свойство вообще не определено в конфигурации. 🔸Переключение реализаций в зависимости от значения свойства: Определяются несколько бинов с разными значениями havingValue. Будет создан только тот бин, значение которого соответствует текущему значению свойства. 👉 Java Portal

Лучший способ использовать методы запросов Spring Data ⏩Читать подробнее 👉 Java Portal | #cтатья
Лучший способ использовать методы запросов Spring Data ⏩Читать подробнее 👉 Java Portal | #cтатья