1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/selfly-sonsure-dumper

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
key-generator.md 2.5 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 28.11.2024 13:43 e04b5c0

Расширение первичного ключа

Интерфейс KeyGenerator определяет генератор первичных ключей. Он содержит один метод:

/**
 * Генерирует значение первичного ключа
 *
 * @param clazz класс
 * @return значение
 */
Object generateKeyValue(Class<?> clazz);

В метод передаётся объект класса текущей сущности, а возвращается сгенерированное значение первичного ключа типа Long или String.

Далее представлены две разные реализации для справки.

Генерация первичного ключа UUID

public class UUIDKeyGenerator implements KeyGenerator {

    @Override
    public Object generateKeyValue(Class<?> clazz) {
        return UUIDUtils.getUUID32();
    }
}

Возвращается сгенерированная строка UUID.

Генерация первичного ключа Oracle

Здесь используется последовательность Oracle. Имя последовательности соответствует соглашению об именах: имя последовательности = seq_ + имя таблицы.

public class OracleKeyGenerator implements KeyGenerator {

    @Override
    public Object generateKeyValue(Class<?> clazz) {
        // Получаем имя первичного ключа на основе имени сущности
        String tableName = NameUtils.getUnderlineName(clazz.getSimpleName());
        return String.format("`{{SEQ_%s.NEXTVAL}}`", tableName);
    }
}

Первичный ключ Oracle особенный. В отличие от других первичных ключей, он не генерирует значения напрямую, а использует соответствующее имя последовательности. Значение первичного ключа получается при фактическом выполнении SQL в базе данных.

Символы {{ }} используются для обозначения имени последовательности и предотвращения его интерпретации как имени таблицы и имени столбца при анализе SQL в программе.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/selfly-sonsure-dumper.git
git@api.gitlife.ru:oschina-mirror/selfly-sonsure-dumper.git
oschina-mirror
selfly-sonsure-dumper
selfly-sonsure-dumper
master