Olá, Pessoal!!
Apresento duas soluções para meu problema, seguido de um questionamento sobre os mesmos.
Tenho uma boa experiência com EJB's, mas uma coisa me deixa "p" da vida... qual seria a melhor forma de criar ID's auto-incrementais (identity) com EJB's CMP?? Eu venho usando uma forma meio (pra não dizer bastante) tosca que é pegar todos os beans (um findAll) e pegar o size da coleção e adicionar um e tentar criar o bean com este valor. Para os casos em que uma exceção ocorre por chave duplicada, eu trato a exceção somando 1 ao que seria a ID anterior e repito o processo. Chega uma hora que o processo funciona (quando não funciona de primeira, claro...). Isso é muito ruim em casos onde muitas atualizações com remoções são realizadas no banco.
Outra forma seria usar um método do tipo ejbSelect, no qual se seleciona a maior ID já criada. Solução perfeita, se não fosse o fato da necessidade de se trabalhar com uma instância do bean (ou seja, é preciso pegar algum bean e fazer a consulta, retornando o valor... não é muito agradável!! Eu já usei coisa semelhante pra pegar outros dados... pra isso, eu criava um bean com um valor qualquer, pegava os dados que queria e a seguir deletava o bean - solução tosca!!).
Qual seria outra solução? Essas quebram o galho, mas perde-se em performance e em clareza, além de ser meio gambiarra.
Se alguém tem uma idéia, vamos discutir! Podemos encontrar outras soluções bem melhores, eu acredito. Ainda bem que não precisei fazer nada grande usando essas soluções :).
Obrigado a todos!!
Marcos J. Hermes