Каков наилучший способ обработки вставки / обновления данных в таблицу с ограничениями уникального ключа на уровне приложения ? Вот что я придумал:
1. Запустите запрос к таблице перед вставкой данных, чтобы посмотреть, не нарушит ли это ограничение.
Плюсы
- У вас есть полный контроль, поэтому вам не нужно иметь дело с сообщениями об ошибках, специфичными для СУБД.
- Дополнительный уровень проверки целостности данных
Против
- Возможна потеря производительности, поскольку большую часть времени не будет нарушений ограничений.
- Вам нужно будет заблокировать таблицу при выполнении запроса на дубликаты данных.
2. Ничего не делать. Обновите таблицу и посмотрите, что прилипает.
Плюсы
- Simple!
- В целом быстрее, так как вам не нужно запускать дополнительный запрос при каждом обновлении таблицы.
Против
- Ваша процедура проверки зависит от уровня базы данных.
- Если данные не сохраняются, вам нужно пройтись по трассировке стека, чтобы найти причину.
Какое из них является наиболее широко принятым решением? Есть ли альтернативы этим?
Я использую Java, JPA, Hibernate и Spring BTW. Любые предложения, даже специфичные для фреймворка, приветствуются!
Спасибо!