DEV Community

Bruno Barros
Bruno Barros

Posted on

Diferença entre os GenerationTypes do Hibernate

Questão de entrevista de emprego!

Image description

IDENTITY: Talvez o mais usado, quando utilizamos IDENTITY o Hibernate utilizará a geração AUTO_INCREMENT para SQL/MySQL, já para o Postgres faz uso do tipo SERIAL.

SEQUENCE: Se permitido pelo banco, utiliza sequencias (sequences) para gerar a chave primária, do contrário, automaticamente será utilizado o padrão TABLE. (https://lnkd.in/d8x5_3bx) - podemos customizar esse generation com nome e valores da sequencia. Atualmente o generation type recomendado pelo Hibernate.

Podemos definir o gerador das sequências através da anotação @SequenceGenerator

AUTO: Default. Se nenhum valor for especificado para o GenerationType, este será utilizado. A implementação definirá que estratégia utilizar. No caso do Hibernate com JPA, seria a SEQUENCE para Postgres e oracle e TABLE para MySQL.

TABLE: Funciona em todos os bancos relacionais. Porém, quando fazemos uso dela o Hibernate precisa necessariamente uma outra tabela para gerar e guardar as chaves primárias. Por motivos de locks e lentidão ao escalar a aplicação, é bom evitar o uso de TABLE.

Mais detalhes e fontes:

https://lnkd.in/dXm6RV3i

https://lnkd.in/dAnHUnMW

Top comments (0)