CMP: ejbCreate и получение уникального Primary KEY
От: secam  
Дата: 14.05.05 19:15
Оценка:
Приветствую !

Есть такой вопрос... Когда в CMP entity определяется метод EJB Create необходино вернуть уникальный первичный ключ, чтобы контейнер мог создать запись в БД с этим идентификатором.
Вопрос в том, как этот идентификатор получить, есть ли какие-то приличные алгоритмы ?

В книжке нашел пример, который состоит в следующем ... для нахождения уникального PK типа Integer делается примерно следующее :
int i=0;
while (true) {
try {
  entity = home.findByPrimaryKey(Integer>getInteger(null,i));
} catch (FinderException ex) {
  break;
}
i++;
}

Таким образом при выходе из цикла получим уникальный id но у меня рука не поднимается использовать настолько корявый способ ... при том, что БД имеет средства AUTO INCREMENT и может сама давать уникальные значения при попытке записать с id=NULL и при этом гарантирует уникальность.
При работе вышеуказанного цикла, контейнеру приходится вызывать множество раз один и тот же запрос к базе данных и по сути перебирать ВСЮ базу, а это могут быть СОТНИ мегабайт !

Обращаюсь к профессионалам, дайте пожалуйста альтернативное решение ...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.