19 de mar. de 2007

JPA/Hibernate com Postgresql








Utilizo hibernate com postgresql há alguns anos. Uma dificuldade que sempre tive nas ferramentas para geração dos antigos XML’s e, agora, as classes anotadas é a sequence.

Nenhuma ferramenta que utilizei até hoje trouxe solução para isso.
O resultado disso é alterar o tipo do id.

Sendo assim segue exemplo do XML e de um classe anotada utilizando as sequences do postgres.

No postgres foi criada a seguinte tabela:










PESSOA

id serial

nome varchar(50)

SEQUENCE
pessoa_id_seq


Na aplicação a seguinte classe:









Exemplo do mapemento desta classe com XML:










Exemplo do mapemento com ANNOTATIONS:








No hibernate toda classe persistente deve ter o atributo id, que será utilizado para garantir a integridade dos objetos.

Esse id pode ser gerado de diversas formas, exemplo:

  • sequence
  • native
  • increment
  • identity
  • native

Para obter os detalhes desses tipos de geradores de id, acesse o site do
Hibernate

No exemplo acima utilizamos a sequence. o parâmetro generator, utilizado no XML e com Annotations identifica qual será o gerador do id que o hibernate deverá utilizar., mas para isso é necessário informar o nome da sequence que será utilizada para a respectiva classe.

Espero ter ajudado de alguma forma.

Abraço à todos!


2 comentários:

Anônimo disse...

Olá,

Este post é meio velho mas me ajudou, valeu kra.

Abraço.

Geraldo Lopes disse...

O Marcos do javafree tem uma solução interessante para este problema:
http://www.javafree.org/javabb/viewtopic.jbb?t=865772