Quando o J2EE foi substituído pelo JEE5, e as configurações via XML passaram a ser efetuadas com base em anotações, as entidades anotadas do JPA passaram a ser utilizadas no lugar dos Entity Beans.Para definir uma chave primária com geração automática de valores, de forma independente do tipo de banco de dados, a configuração deve ser:
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Geração automática de chave primária com JPA
Gabarito: letra E. A única estratégia de geração de chave primária que funciona de forma independente do tipo de banco de dados é GenerationType.TABLE, pois utiliza uma tabela própria para controlar a numeração, sem depender de recursos específicos como auto-incremento (IDENTITY) ou sequências (SEQUENCE).
A questão exige conhecimento das quatro estratégias de @GeneratedValue e sua portabilidade. A banca testa se o candidato sabe que TABLE é a abordagem mais portável, enquanto as demais dependem de funcionalidades particulares de cada SGBD.
Utiliza GenerationType.IDENTITY, que depende de um recurso de auto-incremento do banco de dados (ex.: MySQL, PostgreSQL). Não é independente, pois o banco precisa suportar esse mecanismo.
Alternativa B — ❌ Incorreta
Apresenta erros de digitação (@Collumn ao invés de @Column) e usa @Sequence, que não é uma anotação JPA padrão para geração automática. Para geração com sequências, seria necessário @GeneratedValue(strategy=SEQUENCE) combinado com @SequenceGenerator.
Alternativa C — ❌ Incorreta
Contém @Collumn (incorreto) e @Table, que serve para mapear a entidade a uma tabela, não para geração de chave. Falta a anotação @GeneratedValue.
Alternativa D — ❌ Incorreta
Utiliza GenerationType.SEQUENCE, que depende da existência de uma sequência no banco de dados (ex.: Oracle). Não é independente, e além disso o código apresenta um espaço em sequenceName=" seq_chaves".
Alternativa E — ✅ Correta ⟵ GABARITO
Emprega @GeneratedValue(strategy = GenerationType.TABLE) e @TableGenerator. O JPA cria uma tabela (no exemplo, "tab_chaves") para armazenar o último valor gerado, permitindo que a geração funcione em qualquer banco relacional sem necessidade de recursos específicos. Essa é a forma mais portável e independente.