Questão nº 59

Questão de A definir · FGV DPE-RS 2023 (nº 59)

FGV2023Técnico - Apoio Especializado (Programador)A definir
Gabarito: Aver comentário ↓

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 inde

Resposta comentada

Gabarito Alternativa A

JPA (Java Persistence API) permite que você defina chaves primárias para suas entidades e configure o banco de dados para gerar automaticamente os valores dessas chaves. A anotação @Id marca um campo como chave primária, e @GeneratedValue especifica a estratégia de geração automática, como usar o recurso de auto-incremento nativo do banco de dados.

  • (A) Correta: A anotação @Id designa o campo como chave primária. @GeneratedValue(strategy=GenerationType.IDENTITY) instrui o JPA a usar a funcionalidade de auto-incremento nativa do banco de dados (como AUTO_INCREMENT no MySQL, SERIAL no PostgreSQL ou IDENTITY no SQL Server) para gerar os valores da chave. Esta é uma das formas mais diretas e comuns de geração automática de IDs.
  • (B) Incorreta: @Collumn(name="Id") é para mapear o nome da coluna no banco de dados, não para a estratégia de geração. @Sequence(name="seq_chaves") não é uma anotação padrão do JPA para definir uma estratégia de geração de chave primária; a anotação correta para configurar uma sequência é @SequenceGenerator.
  • (C) Incorreta: @Collumn(name="Id") mapeia o nome da coluna. @Table(name="tab_chaves") é usada para especificar o nome da tabela à qual a entidade está mapeada, não tem relação com a geração automática de chaves primárias.
  • (D) Incorreta: Esta alternativa apresenta uma forma válida e comum de gerar chaves primárias usando uma sequência de banco de dados. @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="sequenceGen") define a estratégia para usar uma sequência, e @SequenceGenerator configura essa sequência. A armadilha aqui é que, embora seja uma solução tecnicamente correta e amplamente utilizada, o gabarito oficial prefere GenerationType.IDENTITY. Isso pode ser porque a questão busca a forma mais direta de usar o auto-incremento nativo do banco de dados, ou a que exige menos configuração explícita de um gerador dentro do JPA (já que IDENTITY se baseia diretamente no tipo de coluna do banco).
  • (E) Incorreta: Esta alternativa descreve uma forma válida de geração de chaves primárias usando uma tabela auxiliar no banco de dados para gerenciar os IDs. @GeneratedValue(strategy = GenerationType.TABLE, generator = "tableGen") define a estratégia, e @TableGenerator configura a tabela que será usada para esse fim. Embora seja uma estratégia funcional, é geralmente mais complexa que IDENTITY e SEQUENCE, e o gabarito indica preferência pela simplicidade e direcionalidade do IDENTITY.

Fonte: FGV DPE-RS 2023 Técnico - Apoio Especializado (Programador) (Caderno Tipo 1). Reproduzida para fins de estudo.

Continue estudando

Estudar é izi

Pratique milhares de questões como esta, de graça, com explicação e gamificação no Quizinho.

Estudar de graça no Quizinho