← Questões de Programação

Programação · FGV · 2023

Questão comentada de Programação

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:

Gabarito: E

No JPA, a chave primária pode ser gerada de várias formas: por identidade do banco, por sequência ou por uma tabela auxiliar de controle. Quando a questão pede geração automática de valores de forma independente do tipo de banco de dados, a ideia é buscar a solução mais portátil possível, isto é, aquela que não dependa de recurso específico do SGBD. Nesse cenário, `GenerationType.IDENTITY` amarra a geração ao mecanismo nativo do banco, então perde portabilidade. Já `GenerationType.SEQUENCE` exige suporte a sequence, o que também não existe em todos os bancos. A saída mais universal é a estratégia baseada em tabela, porque o JPA usa uma tabela para guardar e atualizar o próximo valor a ser utilizado. Por isso, o gabarito é a alternativa E. Ela usa `@Id` para indicar a chave primária e `@GeneratedValue(strategy = GenerationType.TABLE, generator = "tableGen")` junto com `@TableGenerator(...)`, que é exatamente o mecanismo pensado para funcionar de modo independente do banco. Em prova, quando aparecer a palavra "portabilidade", desconfie de `IDENTITY` e `SEQUENCE` e pense no gerador por tabela. Obs.: no código da alternativa há pequenos problemas de digitação em alguns nomes de anotações, mas a lógica conceitual cobrada pela banca é essa.

Continue treinando

Questões relacionadas