Spring: собственный пакетный запрос с использованием аннотации запроса в репозитории? ⇐ JAVA
Spring: собственный пакетный запрос с использованием аннотации запроса в репозитории?
Мне приходится выполнять обновления тысяч записей одновременно, разбитых на пакеты, скажем, по 25 фактических обновлений за раз. Обновление основано на уникальном ограничении «сервис+ключ», и если вставка не удалась, значение обновляется.
Обратите внимание, что меня интересует случай UPSERT, а не только стандартные вставки, поскольку я хочу избежать дополнительных операций чтения базы данных, поскольку эти данные в основном статичны.
Я использую Spring с Postgres 14 и думал, что сделаю что-то вроде следующего, чтобы выполнить обновление в классе репозитория, но хотел убедиться, что обновления выполняются пакетно, если это возможно.
Я установил следующие свойства весенней загрузки, но не вижу никаких сообщений в журнале, указывающих на то, что происходит пакетная обработка:
spring.jpa.properties.hibernate.jdbc.batch_size = 25 Spring.jpa.properties.hibernate.order_inserts = правда Могу ли я сделать это, используя такой метод, или мне нужно сделать это другим способом, например?
@Transactional @Модификация @Запрос( родной запрос = правда, значение = "ВСТАВИТЬ В мою_таблицу" + " (сервис, ключ, значение, версия) " + «ЦЕННОСТИ» + " (:service, :key, :value, :version)" + "В КОНФЛИКТЕ НА ОГРАНИЧЕНИИ позвольте_one_value_per_service_key DO" + «ОБНОВЛЕНИЕ» + "УСТАНОВИТЬ" + "значение = исключенное.значение, версия=моя_таблица.версия + 1" + "ГДЕ" + "my_table.value исключенное.значение") недействительный upsertValue( @Param("service") Строковая служба, @Param("key") Строковый ключ, @Param("значение") Строковое значение, @Param("версия") int версия );
Мне приходится выполнять обновления тысяч записей одновременно, разбитых на пакеты, скажем, по 25 фактических обновлений за раз. Обновление основано на уникальном ограничении «сервис+ключ», и если вставка не удалась, значение обновляется.
Обратите внимание, что меня интересует случай UPSERT, а не только стандартные вставки, поскольку я хочу избежать дополнительных операций чтения базы данных, поскольку эти данные в основном статичны.
Я использую Spring с Postgres 14 и думал, что сделаю что-то вроде следующего, чтобы выполнить обновление в классе репозитория, но хотел убедиться, что обновления выполняются пакетно, если это возможно.
Я установил следующие свойства весенней загрузки, но не вижу никаких сообщений в журнале, указывающих на то, что происходит пакетная обработка:
spring.jpa.properties.hibernate.jdbc.batch_size = 25 Spring.jpa.properties.hibernate.order_inserts = правда Могу ли я сделать это, используя такой метод, или мне нужно сделать это другим способом, например?
@Transactional @Модификация @Запрос( родной запрос = правда, значение = "ВСТАВИТЬ В мою_таблицу" + " (сервис, ключ, значение, версия) " + «ЦЕННОСТИ» + " (:service, :key, :value, :version)" + "В КОНФЛИКТЕ НА ОГРАНИЧЕНИИ позвольте_one_value_per_service_key DO" + «ОБНОВЛЕНИЕ» + "УСТАНОВИТЬ" + "значение = исключенное.значение, версия=моя_таблица.версия + 1" + "ГДЕ" + "my_table.value исключенное.значение") недействительный upsertValue( @Param("service") Строковая служба, @Param("key") Строковый ключ, @Param("значение") Строковое значение, @Param("версия") int версия );
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Опубликовать файл .aar с прикрепленной javadocs в репозитории артефактов.
Гость » » в форуме Android - 0 Ответы
- 6 Просмотры
-
Последнее сообщение Гость
-