Что нового в JPA Buddy 3.0

    Мы выпустили JPA Buddy 3.0! В этом релизе наконец-то появилась генерация скриптов для Flyway, поддержка Kotlin, а также другие улучшения и исправления. Посмотрим на эти нововведения подробнее.

    Для тех, кто не слышал о JPA Buddy: это плагин, который упрощает работу с JPA, Hibernate, Spring Data JPA, Liquibase и подобными технологиями. Подробнее о нем можно почитать в этой статье.

    Flyway

    Нас часто просили добавить поддержку Flyway, и в этой версии она появилась. Теперь JPA Buddy умеет генерировать скрипты миграции Flyway, сравнивая:

    • JPA-сущности и базу данных

    • Две базы данных — текущую и устаревшую

    Генерация скриптов путем сравнения модели данных с целевой БД выглядит вот так:

    JPA Buddy также поможет вам с именованием файлов миграции. Мы добавили целый ряд настроек, который позволяет максимально гибко указать шаблон именования файлов: префикс миграции, шаблон версии, разделитель и описание. Больше об именовании файла миграции можно узнать в документации Flyway (англ).

    Шаблон версии можно выбрать из ряда часто используемых, или же определите свой собственный. Для этого есть следующие макросы:

    • #date ([format]) – текущая системная дата в указанном SimpleDateFormat

    • #increment ([start], [step], [decimalFormat]) – число, используемое для сохранения уникальности имени

    • semVer – семантическая версия проекта

    Больше информации о доступных переменных и макросах есть на странице нашего плагина.

    Kotlin (альфа-версия)

    JPA Buddy наконец–то поддерживает Kotlin! За исключением нескольких инспекций, поддерживается та же функциональность, что и для Java: визуальные дизайнеры для сущностей и репозиториев, генерация equals()/hashCode()/toString(), поддержка JPA конвертеров и Hibernate Custom Types, отображение сущностей в дереве JPA Structure и многое другое.

    Например, так можно создать атрибут в Kotlin-сущности с помощью JPA Palette и JPA Inspector:

    Для репозиториев поддерживаются как обычные методы, так и методы @Query:

    Что важно отметить: Kotlin – очень гибкий язык программирования. Код, который делает одно и то же, можно написать совершенно по-разному. Поэтому программировать на Kotlin – одно удовольствие, а вот разрабатывать для него инструменты не так просто. Мы постарались предусмотреть самые распространенные варианты использования Kotlin в JPA-сущностях и Spring Data репозиториях, но некоторые могли упустить и не протестировать.

    Если вы пишете на Kotlin, пожалуйста, сообщайте нам обо всех возникающих ошибках и проблемах. Улучшение работы с Kotlin — наш главный приоритет в следующих минорных релизах.

    Асинхронные методы в Spring Data репозитория

    Диалоги генерации запросов и JPA Inspector теперь поддерживают создание асинхронных методов в Spring Data репозиториях:

    Односторонний OneToMany с JoinColumn

    В JPA есть поддержка односторонних ассоциаций OneToMany, то есть ассоциаций, которые определены только в одной из сущностей. Один из способов их задать — аннотировать ассоциацию с помощью @JoinColumn:

    @Entity
    public class Customer {
    
       @Id
       @GeneratedValue(strategy = GenerationType.IDENTITY)
       @Column(name = "ID", nullable = false)
       private Long id;
    
       @OneToMany
       @JoinColumn(name = "CUST_ID") // this column is located in the ORDER_ table
       private Collection<Order> orders = new ArrayList<>();
    }

    Столбец «CUST_ID» создается в таблице «ORDER_», при этом в сущности Order соответствующего атрибута нет:

    @Entity
    @Table(name = "ORDER_")
    public class Order {
       @Id
       @GeneratedValue(strategy = GenerationType.IDENTITY)
       @Column(name = "ID", nullable = false)
       private Long id;
    
       // NOTHING about Customer
    }

    Теперь JPA Buddy поддерживает создание таких ассоциаций. Для этого в диалоговом окне создания ассоциации нужно установить флажок «Owning side»:

    Создание отчетов об ошибках с помощью Sentry

    Баги и ошибки неизбежны в любом программном обеспечении, и средства разработки — не исключение. Мы делаем все возможное, чтобы выявить и исправить как можно больше багов, но некоторые из них всё же попадают в релиз. Если вы столкнетесь с ними, пожалуйста, сообщите нам об этом через форму на сайте или в Discord. Это поможет нам сделать JPA Buddy лучше.

    Кстати, мы добавили механизм отправки отчетов об исключениях напрямую. Теперь это можно сделать в пару кликов:

    Заключение

    JPA Buddy продолжает развиваться, в этой статье мы рассмотрели лишь некоторые из улучшений, реализованных в версии 3.0. Многие из реализованных функций были предложены нашим сообществом, и мы призываем вас присоединиться к нам в Discord, чтобы делиться своими идеями и отзывами.

    Haulmont
    Создаем современные корпоративные системы

    Комментарии 0

    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

    Самое читаемое