Генерация идентификаторов#

Для работы прикладной репликации идентификаторы сущностей должны быть сгенерированы генератором уникальных идентификаторов. Реализацию одного из таких генераторов предоставляет сервис Генерации ID (Sberflake ID) (SNOW) Platform V Backend (#BD). Подключить интеграцию с ним можно с помощью плагина интеграции с сервисом Генерации ID (Sberflake ID) (SNOW). Данный сервис генерирует целочисленные идентификаторы типа long.

Настройка подключения к сервису Генерации ID (Sberflake ID) (SNOW)#

Сервис Генерации ID (Sberflake ID) (SNOW) предоставляет REST API. Для подключения к сервису нужно указать URL сервиса:

    configurator.setUrl("<url сервиса>");

Для идентификации модуля и регистрации плагином экземпляра генератора для прикладного модуля нужно указать идентификатор модуля:

    configurator.setModuleId("<module-id>");

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

    configurator.enableByDefault();

При этом важно, чтобы Bean плагина инициализировался раньше фабрики сессий Hibernate.

Использование генератора сервиса Генерации ID (Sberflake ID) (SNOW)#

Если установлена настройка enableByDefault, то для автоматически генерируемых идентификаторов без указания конкретного генератора будет использован генератор сервиса Генерации ID (Sberflake ID) (SNOW):

    @Id
    @GeneratedValue
    private Long id;

Для явного указания генератора нужно объявить поле идентификатора следующим образом:

    @Id
    @GeneratedValue(generator = "sberflake")
    @GenericGenerator(name = "sberflake", strategy = "com.sbt.pprb.integration.hibernate.idgen.plugin.PlatformIdGenerator")
    private Long id;