Генерация идентификаторов#
Для работы прикладной репликации идентификаторы сущностей должны быть сгенерированы генератором уникальных идентификаторов. Реализацию одного из таких генераторов предоставляет сервис Генерации 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;