Pular para o conteúdo principal

Questão de Programação — Linguagens de programação — FUNDATEC 2023

ProgramaçãoLinguagens de programação
Código
qq896819
Banca
FUNDATEC
Órgão
PROCERGS
Ano
2023
Nível
Superior
Cargo
ANC - Analista em Computação - Ênfase em Programação de Sistemas na Tecnologia Java
O trecho de código abaixo, em Java Persistence API (JPA) versão 2.2, apresenta a declaração de uma chave primária composta de uma entidade de um banco de dados.@______public class PessoaId implements Serializable {String nome;String sobrenome;}@______public class Pessoa {@______ PessoaId id;String endereco;}Assinale a alternativa que preenche, correta e respectivamente, as lacunas do trecho de código acima.
  1. AEmbeddable – Entity – EmbeddedId
  2. BInstance – Entity – Primary
  3. CAssociation – Table – Primary
  4. DInstance – Table – EmbeddedId
  5. EEmbeddable – Entity – Primary
Revelar gabarito e comentário

GabaritoA — Embeddable – Entity – EmbeddedId

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”.

JPA – Chave Primária Composta

Gabarito: letra A. A classe que define a chave composta deve ser anotada com @Embeddable, a entidade com @Entity, e o campo que representa a chave composta na entidade com @EmbeddedId. Essa é a forma padrão do JPA (Java Persistence API) para mapear chaves primárias compostas.

A banca testa o conhecimento das anotações específicas do JPA para chaves compostas. É essencial memorizar que:

  • @Embeddable é usada na classe que será embutida (no caso, PessoaId).

  • @Entity marca a classe como entidade gerenciada pelo JPA.

  • @EmbeddedId é aplicada ao campo da entidade que referencia a classe embutível como chave primária.

Alternativa A — ✅ Correta ⟵ GABARITO

Preenche corretamente as lacunas: @Embeddable para a classe PessoaId, @Entity para a classe Pessoa e @EmbeddedId para o campo id. É exatamente o que a especificação JPA 2.2 determina para chaves primárias compostas.

Alternativa B — ❌ Incorreta

Instance não é uma anotação válida do JPA. O correto seria @Embeddable. Além disso, Primary não é uma anotação padrão; o correto é @EmbeddedId. A alternativa não faz sentido no contexto.

Alternativa C — ❌ Incorreta

Association e Table são anotações existentes, mas não se aplicam aqui. @Association é usada para relacionamentos, e @Table para especificar a tabela da entidade. Para chave composta, o terceiro campo deveria ser @EmbeddedId, não Primary.

Alternativa D — ❌ Incorreta

Novamente Instance não existe. Table é usada em entidades, não na definição da chave composta. O terceiro campo também deveria ser @EmbeddedId.

Alternativa E — ❌ Incorreta

Erra no terceiro campo: Primary não é anotação do JPA. O correto é @EmbeddedId. As duas primeiras anotações estão corretas (@Embeddable e @Entity), mas a última invalida a alternativa.

NÃO CAIA NESSA!

A banca explora a confusão entre @Id (para chave simples) e @EmbeddedId (para chave composta). Muitos candidatos lembram de @Id, mas esquecem que chaves compostas exigem @EmbeddedId. Além disso, @Embeddable é frequentemente trocada por outras anotações como @Entity ou anotações inexistentes. Memorize o trio: @Embeddable na classe de chave, @Entity na entidade, e @EmbeddedId no campo.

Gabarito: letra A.

Link permanente: /questoes/qq896819