Questão de Programação — Linguagens de programação — FUNDATEC 2023
Programação›Linguagens 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.
AEmbeddable – Entity – EmbeddedId
BInstance – Entity – Primary
CAssociation – Table – Primary
DInstance – Table – EmbeddedId
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.