Gerando ID's automaticamente em java!

fala galera, blz!?!?

então seguinte… to com uma dúvida… ehheheh keria gerar automaticamente minhas id em meus daos, e keria fazer isso no meu codigo, sem depender de sequences ou q o proprio sgbd fizesse isso pra mim… tem como… alguem tem o componente ou a classe java q faça isso… ehehhe ou algum link aonde eu possa encontrar tal coisa…

desde jah agradeço…

[]'s

hhmm… simplesmente ter um contador ( long, int, o tamanho q vc precisar ) e ir incrementando ele ( sincronizando, provavelmetne ) nao resolve?

Rafael

Vc quer um “ID” para cada objeto gerado ,eh isso?(Não sei se entendi direito…)
Talvez isso ajude:
http://www.guj.com.br/forum/viewtopic.php?t=2110&highlight=hash

Para o caso de persistência, um contador nem sempre é a melhor solução.

O Banco poderia fazer isto, mas tanto a aplicação como o banco poderiam ter o gargalo do sincronismo. Para isto, a solução é utilizar um uuid, que permite a criação de id em paralelo (sob as mais adversas situações).

Uma implementação é este ótimo projeto opensource
http://www.doomdark.org/doomdark/proj/jug/

O java 1.5 já fornece uma classe para manipulação de uuid também
http://java.sun.com/j2se/1.5.0/docs/api/java/util/UUID.html

Voce pode usar hashed locks se o contador acabar sendo 1 gargalo.
Mas lembre que essa solução impede o uso do banco por mais de 1 aplicação para escrita.
Além disso voce tem que calcular o valor inicial do contador quando o sistema inicia.
UUIDs costumam ser muito grandes, mas são uma ótima opção também.

Se você estiver interessado em usar Hibernate como framework de persistência ele fará isso por você, gerando chaves sequenciais autoincrementadas para a tabela.

então… ehhehe to tentando usar o hibernate… hehehe

se vcs puderem me ajudar… tenho o hibernate 2.0

eu criei um atributo como segue…

private static SessionFactory factory;

dentro de uma classe dao…

ai por exemplo no metodo insert… eu faço assim pra persistir…

Session session = factory.openSession();
session.save(autor);
session.flush();
session.close();

mas qdo faço ‘Session session = factory.openSession();’ ele da um pau e explode uma pilha no meu jboss… ehhehehe o famoso java.lang.NullPointerException!! :smiley:

se alguem puder me ajudar… ehehhehe

valeu galera…

Colher de chá para vc…

<id
name="propertyName" 
type="String"
column="column_name"
<generator class="uuid.hex"/>
</id>

A coluna column_name precisa ter tamanho 32 e suportar strings.

Qualquer dúvida, não se esqueça de ler
manual do hibernate

IMHO esta é a melhor solução de id.