Здравствуйте, unkis, Вы писали:
L>>не правильным путем идете, товарисч, когда вокруг советуют использовать чисто синтетические ключи с хибером!
U>Ребята, вы бы не мгли мне рассказать что такое эти синтетические ключи? как они мне помогут? как их в Hibernate использовать?
Отчего ж
L>Отчего ж
я не нашел ни слово о синтетическом ключе, зато нашел что-то что я использую называется интеллектуальным ключом.
Прочитал его недостатки, м рекомендации об использовании так называемого суррогатного ключа, возможно это и есть синтетический ключ, тоесть не зависимого от атрибутов, тоесть обычный ключ, который автоматически увеличивается.
Но как я уже писал выше, что перед каждой вставкой мне нужно производить проверку(тоесть выборку) на существования такой же записи(проверять все атрибуты), и получается что при 1,000,000 вставок мне надо будет делать как минимум 1,000,000 выборок(причём не простых) и это только по одной таблице. По этому поиск по интеллигентному ключу повышает производительность в сотни раз.
А как вы бы решили такую проблему?
Здравствуйте, unkis, Вы писали:
U>А как вы бы решили такую проблему?
Применительно к MySQL мы ее решаем так: По любому, создаем суррогатный (он же синтетический) ключ. Тройку полей объединяем в уникальный ключ. Далее
1) Если надо вставить запись, только если другой с таким же ключом не существует а иначе про нее забыть, используем INSERT IGNORE, который в случае наличия дублирования просто проигнорирует запись.
2) Если в случае отсутствия в БД записи с нужным ключом, ее надо вставить, а в противном случае обновить данные в существующей, используем INSERT ... ON DUPLICATE KEY UPDATE ....