169 похожих чатов

Я импортирую данные из стороннего сервиса и процесс включает в

себя загрузку изображений также. Так вот, если повторно импортировать, то получаю DuplicateKeyException, оно и понятно. Вопрос вот в чем: как лучше обработать эту ошибку?
1) entityManager.contains(Object obj)
2) перед загрузкой изображений сделать запрос в БД со списком ID и вернуть список не найденных, то есть еще не сохраненных файлов (мне нравится этот вариант, потому что сэкономлю ресурсы, если не буду загружать частично файлы или вовсе не стану этого делать)
3) проигнорировать ошибку, записав лишь в логах

4 ответов

7 просмотров

Советую - 2, но там ещё нужно глянуть, возможно ли что две разные транзакции, работающие параллельно, будут импортить один и тот же файл

ни один из способов не даёт гарантию, констрейнты проверяются на этапе коммита транзакции, никто не помешаетвсунуть в бд запись между твоими проверкой и записью поэтому экзепшн никуда девать не надо, можно например побить пачку изображений на части и коммитить по отдельности (обрабатывая экзепшн ретраем или как-то иначе)

Rakhmonov- Автор вопроса
Роман Нагаев
ни один из способов не даёт гарантию, констрейнты ...

Спасибо за подробный ответ, но почему нужно ретраить DKE?

Rakhmonov
Спасибо за подробный ответ, но почему нужно ретраи...

если данные не теряют смысл от дублирования, например коллизия при генерации суррогатного PK случилась

Похожие вопросы

Обсуждают сегодня

я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
короче сгенерила мне эта штука код на ассемблере: struc string val { common local .value dq .value .value: if ~val eq db val end if db 0 } fo...
Vi Chapmann Chapmann
12
Всем привет! Массив вводится с клавиатуры, кол-во элементов неизвестно, поэтому я указал arr db 100 dup(?) С нахождением максимума проблем нет, а вот минимум почему-то всегд...
En Vind Av Sorg
11
кто шарит: mattermost отслеживает что ты на пк запускаешь?
Valentin
13
Помогите, пожалуйста, делаю программу для для подсчёта корней квадратного уравнения, знаю, что есть куча недочётов, недоработок, но основная проблема в том, что почему-то при ...
NYC
13
#include <stdio.h> int main(void) { int n; scanf("%d", &n); int digits1[n] = {0}; int digits2[n] = {0}; я не могу таким образом заранее массив нулями заполнить?
Linus
12
в сях есть множество как в питоне? для удаление дубликатов
Linus
25
читать файл максимально быстро? странный вопрос))
zamtmn
53
я про форму записи. смысл указывать что 8 байтный регистр 8 байт?
Aiwan \ (•◡•) / _bot
10
Вроде бы вопрос уже заезжанный, но тем не менее У меня есть функция menu() которая выводит набор возможных действий, а затем спрашивает у пользователя что он хотел бы сделать....
David Golovatin
5
Карта сайта