Portabilidade entre bancos JPA

Estou desenvolvendo uma aplicação que utiliza JPA com Hibernate. E um requisito deste sistema é permitir a portabilidade entre bancos.

Cenário:

Cliente 1 – Utiliza o banco de dados Firebird;
Cliente 2 – Utiliza o banco de dados Postgres;
Cliente 3 – Utiliza o banco de dados MySql;

O problema inicial ocorria em virtude da geração das chaves primárias. Postgres e FireBird fazem este controle com o uso de sequence, já o MySql utiliza um auto incremento próprio.

Para solucionar esse problema, foi necessário definir a strategy do @GeneratedValue como Auto e acrescentar o @SequenceGenerator. Vejamos o código:

Realizei um teste de inclusão nos 3 bancos e tive êxito. Caso queiram baixar o código do teste, clique aqui. Aconselho a leitura desse post da TriadWorks onde eles dão 6 dicas de como manter a portabilidade entre bancos com JPA.

Deixe uma resposta