Hibernate ID Generator Confusion - PullRequest
       1

Hibernate ID Generator Confusion

0 голосов
/ 25 февраля 2011

Я использую Hibernate 3.0 в своем приложении с базой данных Postgres .Это приложение для мониторинга, которое собирает данные каждую минуту.Таким образом, у нас есть тысячи строк в некоторых таблицах каждый месяц.

В настоящее время я использую sequence для генерации Id в спящем режиме.Есть ли лучший вариант по этому сценарию?

Любое предложение будет оценено.

Ответы [ 2 ]

1 голос
/ 25 февраля 2011

ИМХО последовательность является лучшим подходом, поскольку она дает вам больше гибкости, хотя вы также можете использовать столбец идентификаторов (автоинкремент).Я думаю, что postgres это называется последовательным, и есть также способ хранить идентификаторы в отдельной таблице.Для решения этих трех подходов вы можете использовать:

@GeneratedValue(strategy=GenerationType.TABLE)
@GeneratedValue(strategy=GenerationType.SEQUENCE)
@GeneratedValue(strategy=GenerationType.IDENTITY)

Что касается вашего предыдущего вопроса, хорошо ли использовать одну последовательность для всех таблиц.Я бы не рекомендовал такой подход, потому что db должен утверждать, что все порядковые номера уникальны, поэтому каждое сгенерированное значение последовательности должно синхронизироваться сервером db.Если у вас есть одна последовательность на дБ, это может вызвать проблемы производительности, когда несколько запросов из нескольких таблиц запрашивают следующее значение идентификатора.Я бы порекомендовал иметь одну последовательность на таблицу.

0 голосов
/ 25 февраля 2011

Хотя я не уверен, есть ли лучшая альтернатива, чем использование последовательности, я вполне уверен, что вы захотите взглянуть на использование StatelessSession , если это только для сбора данных. Вы можете избавиться от всех накладных расходов, например, кэш 1-го уровня, транзакционная запись и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...