Тестовое Java Junior Rest API Hibernate n+1

Поделиться
HTML-код
  • Опубликовано: 26 сен 2024
  • Тестовое Java Junior Rest API Hibernate n‪@RicisOfficial1795‬+1
    Курс по Java - job4j.ru/
    Пробные собеседования в IT - checkdev.ru/

Комментарии • 34

  • @smehoboy2310
    @smehoboy2310 2 месяца назад +1

    На самом деле контроллер не оборачивается по дефолту в транзакцию , если не поставить явно @Transactional , но когда её поставить то будет выборка по умолчанию Lazy
    Также многое зависит от версии JPA и Hibernate, но Spring Data это обвертка на Hibernate это тоже на до учитывать
    Подход с сборкой объекта в памяти плохое решение потому что данных в базе может слишком много и она знает как это сделать эффективнее чтобы не собирать все
    А вытаскивая все данные из памяти вы тем самы нагружаете базу
    Вообще в идиале в задаче на производительность не нужно было использовать JPA
    А если условие с JPA то тогда Join Fetch или EntityGraph
    Joint Fetch должен делать один запрос , если это не так значит не правильная конфигурации,
    особенно если указываются ленивые коллекции в Entity
    Кроме того Hibernate использует различные оптимизации под капотом при агрегации
    в частности это связано с кешем первого уровня и временными таблицами из api базы

  • @Сергей-и8ж7в
    @Сергей-и8ж7в 6 месяцев назад +1

    Супер видео, очень познавательно)
    Я, конечно, не много тестовых делал, но конкретно это, очевидно, на мидловскую позицию. Тем более как сказали в ролике: они даже не попросили переделать, а сразу отказали.
    На джунов обычно что-то типа: напишите круд для склада носков или напишите модуль фильтрации для такой-то сущности по таким-то критериям.

  • @ПавелЕфремов-м2д
    @ПавелЕфремов-м2д 9 месяцев назад +15

    Мне кажется на рынке работодатель просит Мидлов на позицию Джунов....

    • @geraldik
      @geraldik 9 месяцев назад +12

      В поиске высококвалифицированных низкооплачиваемых кадров))

    • @ДаниилЪ-б2з
      @ДаниилЪ-б2з 9 месяцев назад +3

      Вам не кажется.

    • @unicoxr5tj417
      @unicoxr5tj417 7 месяцев назад

      тебе не кажется

    • @BigAliFamily
      @BigAliFamily 7 месяцев назад

      Вам совсем не кажется. Так и есть

    • @Сергей-и8ж7в
      @Сергей-и8ж7в 6 месяцев назад +5

      не на позицию, а за зарплату джуна) так и есть) но согласитесь, было бы глупо с таким конкурсом на одну джуновскую вакансию не резануть зарплатную вилку по этой вакансии)

  • @Пумпурумм
    @Пумпурумм 2 месяца назад +1

    Очень даже понятно все с чистотой кода, здесь таблицу не указал, там колонку не указал, сям метод через одно место назвал - всё это влияет

  • @j_denis
    @j_denis 9 месяцев назад

    Очень полезный разбор. Петр, спасибо 👍

  • @artemief
    @artemief 7 месяцев назад +1

    Спасибо, позновательно !💪👍

  • @вапвапвапвапва-ж1и
    @вапвапвапвапва-ж1и Месяц назад +2

    Уволили? С чего бы?

  • @SuperNunrg
    @SuperNunrg 9 месяцев назад +1

    для oracle есть ограничения на кол-во парметров в IN что-то вроде 1000. И запрос может упасть при пейдж сайз > 1000. Лучше наверное использовать join fetch и забирать данные одним запросом. Хотя опять же все зависит от реальных требований. Согласен, что по этому тестовому, можно было хотя бы поговорить с человеком про N+1 знает или нет. Тем более это на джуна, больше похоже на какую-то формальность со стороны компании которой люди не нужны, но нужно внутри отчитаться за процесс найма.

  • @user-thienalo
    @user-thienalo 6 месяцев назад +2

    Честно говоря 2 раз пересматриваю видео и всё ещё не могу понять как была решена проблема n+1 в вашем коде, объясните пожалуйста...

    • @job4j
      @job4j  6 месяцев назад +1

      Мы получаем список id и уже по ним получаем сразу список объектов.
      то есть
      select from user;
      select from address where id in (id из первого запроса).
      То есть у нас 10 пользователей. Нам нужно для каждого пользователя получить его адрес. Это было 1 + 10 запросов. А так получается 1 + 1 запрос.

  • @iisrail
    @iisrail 5 месяцев назад +2

    Извините осталось не понятно, а почему проблему не решать с помощью fetch join

    • @job4j
      @job4j  5 месяцев назад

      Если отношения one-to-many то join fetch будет делать еще один запрос на каждый элемент select. Это в логе можно увидеть. Попробуйте.

  • @ivanstrelka3448
    @ivanstrelka3448 5 месяцев назад

    Очень полезный разбор. Петр, спасибо

  • @shjwfanshjwfan
    @shjwfanshjwfan 7 месяцев назад +2

    на мой взгляд утверждение о том, что дизайн закладывается framework-ом - не правильное, framework это всё лишь инструмент (адаптер если угодно, для того чтобы работать с HTTP, с БД и т.д.), который строиться вокруг бизнес логики у которой может быть какой угодно дизайн

    • @job4j
      @job4j  6 месяцев назад

      Фреймворки - он и переводится как рамка, то есть приложение нужно вписать в эту рамку. А вот библиотека, как раз нацелена, на то чтобы решить узкую задачу, типа работать с HTTP, базами данных и тд. Можно сделать свой каркас только из библиотек и не использовать фреймворки.

  • @Ерболат-н3к
    @Ерболат-н3к 6 месяцев назад

    Здравствуйте, может я невнимательно слушал, но тема комментариев к задачам показалась нераскрытой во второй части видео

  • @nizat_rum
    @nizat_rum 9 дней назад

    Ссылку бы на git этого решения...

    • @job4j
      @job4j  9 дней назад

      Не надо плодить эти решения. Напиши свое.

  • @tesgreat8958
    @tesgreat8958 7 месяцев назад +7

    не хреновое тестовое )) такие таски и за зарплату не все вытаскивают.

  • @____8977
    @____8977 8 месяцев назад

    Здравствуйте, в 32 года стать java программистом реально? Около 10 лет назад очень сильно изучал Java, многое забыл, но принципы ООП понимаю.

    • @job4j
      @job4j  8 месяцев назад +6

      У нас ученик устроился в конце 2023 года в 55 лет. Так что в 32 года можно все.

    • @bbrother92
      @bbrother92 23 дня назад

      @@job4j да но ученик заканчивал физмат

  • @job4j
    @job4j  9 месяцев назад +1

    Тестовое Java Junior Rest API Hibernate n +1
    Курс по Java - job4j.ru/
    Пробные собеседования в IT - checkdev.ru/

  • @ascar66
    @ascar66 9 месяцев назад

    Джава доки это же и есть свагер