ความคิดเห็น •

  • @Denleont
    @Denleont 10 หลายเดือนก่อน +4

    Спасибо за интересный доклад! мы в своё время тоже столкнулись с этой проблемой пагинации в памяти приложения. Мало кто в принципе знает об этой проблеме

    • @arvgord
      @arvgord 3 หลายเดือนก่อน

      Спасибо! Рад, что вам было интересно.

  • @MaximBodrov
    @MaximBodrov 10 หลายเดือนก่อน +3

    Спасибо Артему! BatchSize классная в данном случае штука! Но как я понял, она имеет преимущество над вторым подходом в случае, когда дочерних объектов слишком много (10-20-больше). Если пара-тройка, то они оба хороши

    • @maximelmanov6719
      @maximelmanov6719 9 หลายเดือนก่อน

      Она имеет преимущество из-за 2-х запросов к бд, что занимает значительное время. Плюс риски дисконекта увеличиваются

    • @arvgord
      @arvgord 3 หลายเดือนก่อน

      Если в связанных коллекциях содержится небольшое количество объектов и у вас всего несколько коллекций @OneToMany, то значительной разницы вы не заметите.

  • @Batyrev
    @Batyrev 9 หลายเดือนก่อน +1

    Спасибо за доклад! Интересно что уже не в первый раз встречаю мнение о том что нативный запрос "написанный ручками" или вью как-то решают описанные в докладе проблемы с декартовым произведением. По сути дела те же самые джоины уйдут в нативный запрос или во вью, а декартово произведение никуда не денется + к этому ещё нужно будет как-то прикрутить пагинацию! К сожалению это осознаётся только когда непосредственно столкнёшься с реализацией...

    • @maximelmanov6719
      @maximelmanov6719 9 หลายเดือนก่อน

      Query DSL/jpa streamer в помощь

  • @maximelmanov6719
    @maximelmanov6719 9 หลายเดือนก่อน

    Был очень удивлен, что не было слов про query dsl или jpa streamer. Человек посмотрит и ришит, буду использовать batchsize, минусы которого очевидны. Или два запроса к бд, что тоже очень странно в наше время. В любом случае доклад - это большое дело, но ожидания совсем неоправдали себя(

    • @arvgord
      @arvgord 3 หลายเดือนก่อน

      Мне было бы интересно узнать, как Query DSL или JPA Streamer решают проблему декартова произведения в запросах с пагинацией. Если у вас есть примеры рабочего кода, например, на GitHub, я бы с удовольствием ознакомился с ними.

  • @alekseyshibayev5243
    @alekseyshibayev5243 6 หลายเดือนก่อน

    1. Спасибо за доклад. Тоже рою jpa.
    2. На 12 минуте понял к чему ты клонишь, если бы ты использовал List, а не Set, то получил бы исключение, загуглив которое, ты нашел бы статью от Влада Михалсеа. Где он пишет, что Set не решает проблему, а под капотом будет декартово произведение.
    3. Я написал самописный динамический ентити граф, через дерево и сабграфы. Интересно попробовать его вместе с батч сайзом, написаным в ручную через цикл по айдишникам.

  • @bananasba
    @bananasba 10 หลายเดือนก่อน +1

    Мне тут кто-то рассказывал как все хорошо в джаве с проекциями из бд, где ты?)

    • @artem-wm7ou
      @artem-wm7ou 10 หลายเดือนก่อน +1

      Наверное просто не использует хибер)

    • @maximelmanov6719
      @maximelmanov6719 9 หลายเดือนก่อน

      Query DSL/jpa streamer в помощь

  • @ins798
    @ins798 10 หลายเดือนก่อน +4

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

  • @vladimir.kravets
    @vladimir.kravets 10 หลายเดือนก่อน +8

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

    • @dmitrysmirnov5575
      @dmitrysmirnov5575 10 หลายเดือนก่อน +1

      или вьюху на стороне БД и проецировать это куда хочешь на стороне джава и делать старую добрую пагинацию из коробки. Как-то все сложно у автора

    • @maximelmanov6719
      @maximelmanov6719 9 หลายเดือนก่อน

      Query DSL/jpa streamer в помощь

    • @arvgord
      @arvgord 3 หลายเดือนก่อน

      Использовать или не использовать Hibernate зависит от вашей конкретной задачи и предпочтений. Для небольших микросервисов может быть вполне достаточно JdbcTemplate. Для микросервисов со сложной бизнес-логикой Hibernate позволяет быстро реализовывать необходимый функционал. Когда у вас динамические запросы с фильтрацией и сортировкой по десяти полям, это существенно ускоряет работу. С помощью абстракции вы не привязаны к конкретной базе данных. Также не всегда есть возможность выбора библиотек или фреймворков в существующих проектах. В данном докладе я рассматриваю проблемы, с которыми могут столкнуться разработчики (как я столкнулся), которые уже используют Hibernate в своих проектах или только планируют его использовать.

    • @erlanibraev
      @erlanibraev หลายเดือนก่อน

      Потому что он идёт в зависимостях spring-data-jpa 😂

  • @vladimirmokeev2856
    @vladimirmokeev2856 4 หลายเดือนก่อน +1

    Изначально говорит, что ему надо выводить количество по счетам и прочую стату. А потом пишет код, чтоб вытягивать все из базы, вместо того, чтобы агрегаты использовать. Кек

  • @ins798
    @ins798 10 หลายเดือนก่อน +2

    Да, используйте нативный запрос, если запрос сложный. Какую-то фигню наковыряли и носятся с нею.

    • @maximelmanov6719
      @maximelmanov6719 9 หลายเดือนก่อน

      Нативный тежелее поддерживать, т.к. придется при необходимости "дебажить" строки, что не очень удобно. Query DSL/jpa streamer в помощь

  • @vladimirmokeev2856
    @vladimirmokeev2856 4 หลายเดือนก่อน +1

    Какой же он не компетентный. Не может даже нормально энтити граф использовать. А "замеры скорости" - это испанский стыд. Вопрос вообще некорректный изначально. Там рост m^n, а он все чешет про 2^n. Всегда можно будет подобрать m и n, чтобы его любимчик выиграл в миллион раз.
    Хорошо хоть ему на это несколько раз указали потом