Параллельная вставка гибернации

Я столкнулся с проблемой. У меня есть приложение с Hibernate, которое загружает данные из XML-файлов в таблицы в параллельном режиме. Некоторая часть данных может быть одинаковой и может быть вставлена ​​из разных потоков. Каждый поток работает в своей собственной долгосрочной транзакции. Возникает проблема, когда два или более протектора пытаются зафиксировать транзакцию. Например, два потока вставили записи в таблицу Город , которая имеет ограничение на поле ИМЯ . Это означает, что ConstraintViolationException возникает при flush () или commit (). Я хочу автоматически обрабатывать эти столкновения и хочу, чтобы новые проблемные объекты были заменены более старыми, уже вставленными объектами. Это возможно? Я смотрю на saveOrUpdate () и оптимистичный контроль версий в Hibernate.

9
задан Viktor Stolbin 17 May 2011 в 01:38
поделиться