#hibernate
#режим гибернации
Вопрос:
у меня следующая ситуация: пользователь загружает CSV-файл. каждая строка в файле csv является объектом. я анализирую файл и создаю тысячи объектов, которые сохраняю в базе данных через режим гибернации. теперь может быть возможно, что пользователь изменяет, например, 3 записи в файле csv, но загружает весь файл. это означает, что, например, 9,997 записей равны и только 3 отличаются. какой наилучший способ обновить данные с помощью гибернации?
я надеюсь, что кто-нибудь может мне помочь, пожалуйста.
заранее благодарю, Саймон
Ответ №1:
Если у вас есть уникальный идентификатор и вы используете update
/ merge
, то hibernate не будет создавать новые записи.
Комментарии:
1. нет, проблема в том, что UID (= первичный ключ) создается автоматически, и когда я разбираю файл в следующий раз, у меня нет UID, поэтому мне нужен способ узнать, какой объект в базе данных принадлежит строке в файле csv, а затем я должен проверить, равны значения или нет.
2. таким образом, вы не можете идентифицировать записи. Тогда вы не сможете этого сделать — удалите все и вставьте заново.
3. у меня была идея сохранить хэш-код каждого отдельного объекта в БД, и после анализа csv я могу найти каждый объект с помощью хэш-кода.
4. что ж, это вариант. Просто создайте индекс для хэша. И измерьте это, потому что удаление и вставка могут быть быстрее.
5. я думаю, что была проблема, почему я не должен удалять и вставлять ее, но я не могу вспомнить прямо сейчас. 🙂