Gerando ID's automaticamente em java!

7 respostas
cezbatistao

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

7 Respostas

Rafael_Steil

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

Rafael

Ironlynx

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

rodrigousp

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

louds

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.

gcobr

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

cezbatistao

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…

rodrigousp

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.

Criado 30 de junho de 2004
Ultima resposta 2 de jul. de 2004
Respostas 7
Participantes 6