Приветствую !
Есть такой вопрос... Когда в 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 и при этом гарантирует уникальность.
При работе вышеуказанного цикла, контейнеру приходится вызывать множество раз один и тот же запрос к базе данных и по сути перебирать ВСЮ базу, а это могут быть СОТНИ мегабайт !
Обращаюсь к профессионалам, дайте пожалуйста альтернативное решение ...