Re[7]: Hibernate, Id из нескольких колонок, в одной колонке?
От: Lucker Беларусь http://lucker.intervelopers.com/
Дата: 15.06.07 12:45
Оценка:
Здравствуйте, unkis, Вы писали:


L>>не правильным путем идете, товарисч, когда вокруг советуют использовать чисто синтетические ключи с хибером!


U>Ребята, вы бы не мгли мне рассказать что такое эти синтетические ключи? как они мне помогут? как их в Hibernate использовать?

Отчего ж
Blog
Re[8]: Hibernate, Id из нескольких колонок, в одной колонке?
От: unkis  
Дата: 15.06.07 13:12
Оценка:
L>Отчего ж

я не нашел ни слово о синтетическом ключе, зато нашел что-то что я использую называется интеллектуальным ключом.

Прочитал его недостатки, м рекомендации об использовании так называемого суррогатного ключа, возможно это и есть синтетический ключ, тоесть не зависимого от атрибутов, тоесть обычный ключ, который автоматически увеличивается.

Но как я уже писал выше, что перед каждой вставкой мне нужно производить проверку(тоесть выборку) на существования такой же записи(проверять все атрибуты), и получается что при 1,000,000 вставок мне надо будет делать как минимум 1,000,000 выборок(причём не простых) и это только по одной таблице. По этому поиск по интеллигентному ключу повышает производительность в сотни раз.

А как вы бы решили такую проблему?
Re[9]: Hibernate, Id из нескольких колонок, в одной колонке?
От: Lucker Беларусь http://lucker.intervelopers.com/
Дата: 15.06.07 13:27
Оценка:
Здравствуйте, unkis, Вы писали:

U>А как вы бы решили такую проблему?

Применительно к MySQL мы ее решаем так: По любому, создаем суррогатный (он же синтетический) ключ. Тройку полей объединяем в уникальный ключ. Далее
1) Если надо вставить запись, только если другой с таким же ключом не существует а иначе про нее забыть, используем INSERT IGNORE, который в случае наличия дублирования просто проигнорирует запись.
2) Если в случае отсутствия в БД записи с нужным ключом, ее надо вставить, а в противном случае обновить данные в существующей, используем INSERT ... ON DUPLICATE KEY UPDATE ....
Blog
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.