Не используй Lombok с JPA, пока не посмотришь это видео | Amplicode

Sdílet
Vložit
  • čas přidán 29. 06. 2024
  • #Amplicode #Spring #SpringBoot #SpringData #JPA #Hibernate #IntelliJ #Java #Kotlin
    Lombok действительно отличный инструмент! Одна строчка кода и все твои JPA сущности перестают корректно работать 👍
    Но это только в том случае, если ты не знаешь, какие фичи Lombok можно использовать с JPA, а какие лучше не стоит.
    В новом видео мы рассказали про большинство подводных камней, с которыми ты можешь столкнуться, используя JPA вместе с Lombok, а также про то, как с этими подводными камнями можно справится.
    ----- Таймкоды -----
    00:00 - Введение. Lombok + JPA
    00:25 - @EqualsAndHashCode от Lombok для JPA Entity
    02:49 - Базовая реализация методов equals() и hashCode() вместе с JPA
    03:49 - Верная реализация методов equals() и hashCode() для JPA Entity
    06:16 - @ToString и загрузка ленивых ассоциаций
    07:22 - @ToString и StackOverflowError
    08:27 - @Data и её проблемы
    09:20 - @Builder и @AllArgsConstructor удаляют конструктор без параметров
    10:17 - Кодогенерация от Amplicode с учётом нюансов использования Lombok
    11:25 - Итоги. Так ли плох Lombok?
    ----- Что такое Amplicode -----
    Amplicode - это набор инструментов максимально эффективной и комфортной разработки сервисов и web приложений на Spring Boot в IntelliJ IDEA и административного пользовательского интерфейса на React Admin в VS Code.
    ----- Как установить Amplicode в IntelliJ IDEA -----
    Инструкция - amplicode.ru/documentation/in...
    ----- Как установить Amplicode в VS Code -----
    Инструкция - amplicode.ru/documentation/in...
    ----- Amplicode в социальных сетях -----
    Сайт - amplicode.ru
    Телеграм - t.me/amplicode
    Телеграм-чат - t.me/amplicode_chat
    Вконтакте - amplicode
    GitHub - github.com/Amplicode/amplicode
    Почта - info@amplicode.io
  • Věda a technologie

Komentáře • 7

  • @ender_man1576
    @ender_man1576 Před 8 hodinami

    Спасибо за видео. Только начал изучать спринг, больше бы таких видосов с фишками и лучшими практиками

  • @nostradamus_tech
    @nostradamus_tech Před 4 dny +2

    По кайфу брат, чёткий базар держишь, разложил для пацанов всё по полочкам. Ровный ты чувак, респект и уважуха со всего нашего района

    • @amplicode
      @amplicode  Před 4 dny

      Спасибо большое!

  • @user-zl2kb2ze3m
    @user-zl2kb2ze3m Před 56 minutami

    Какую книгу посоветуете о подобных нюансах?

  • @pilotivanovich
    @pilotivanovich Před 3 dny

    объясните, почему у разных объектов одного класса будет одинаковый hashCode в вашем варианте ?

    • @amplicode
      @amplicode  Před 3 dny +1

      Добрый день!
      Потому что в моём случае мы отталкиваемся от имени класса. А имя класса у двух объектов будет одинаковое.
      Если будет прокси, то мы получим имя оригинального класса и возьмём от него хэшкод:
      instanceof HibernateProxy ? ((HibernateProxy) this).getHibernateLazyInitializer().getPersistentClass().hashode()
      А если будет оригинальный класс, то сразу возьмём хэшкод:
      getClass().hashCode()

    • @pilotivanovich
      @pilotivanovich Před 3 dny

      @@amplicode спасибо!

    • @VasillaRobocraft
      @VasillaRobocraft Před 2 dny

      ​@@amplicode
      Так если hashcode считается на основе имени класса, разве он не окажется одинаковым для абсолютно любых инстансов?