Сохранение элементов коллекции в базе данных, только если они не существуют - PullRequest
0 голосов
/ 04 августа 2020

У меня есть коллекция объектов (id-type1-type2), которую я должен сохранить в базе данных, если они еще не существуют.

Комбинации type1-type2 должны быть УНИКАЛЬНЫМИ в базе данных (там уникальное ограничение в базе данных для этой комбинации). Мой вопрос: как мне сохранить данные в моей коллекции (могут быть тысячи объектов) без исключения SQL (из-за уникального ограничения), не проверяя, существует ли каждая запись в коллекции в БД перед ее сохранением? Возможно ли это?

Нужно ли повторять сборку, проверять наличие каждой записи (один вызов базы данных для каждой проверки), а затем сохранять все те, которых там нет? Есть ли лучший способ минимизировать количество поездок туда и обратно? Возможно, я смогу получить все записи, отфильтровать их своей коллекцией (те, которые существуют в обеих коллекциях), а затем сохранить только новые. В этом случае я делаю вызовы на 2 дБ. Однако в этом случае меня беспокоит память.

Я использую Java и Spring, но это общий вопрос. Заранее спасибо.

1 Ответ

0 голосов
/ 04 августа 2020

Вы должны быть внимательны. Если вы используете UniqueKeyConstraint с комбинацией клавиш (Field1-Field2), сама база данных сделает всю работу за вас.

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