Pular para o conteúdo principal

Questão de Programação — Linguagens de programação — FCC 2022

ProgramaçãoLinguagens de programação
Código
fc061111
Banca
FCC
Órgão
DETRAN-AP
Ano
2022
Cargo
Analista de Tecnologia da Informação
Considere as linhas abaixo, presentes em uma classe chamada Departamento.java de um aplicação que utiliza JPA 2.0 implementada com Hibernate 4.3.@OneToMany(cascade = CascadeType.ALL, mappedBy = "departamento", fetch = FetchType.EAGER) private List funcionarioList;Estas linhas permitem concluir corretamente que
  1. Aa partir dos dados de um funcionário podem-se obter os departamentos aos quais ele está associado.
  2. Bhá um relacionamento com cardinalidade 1-para-muitos entre as classes Funcionario e Departamento, ou seja, 1 funcionário pode estar relacionado a muitos departamentos.
  3. Ca instrução FetchType.EAGER está incorreta e deve ser substituída por FetchType.LAZY para que os funcionários associados a um departamento sejam carregados sob demanda.
  4. Dhá um relacionamento com cardinalidade 1-para-muitos entre as classes Departamento e Funcionario, ou seja, 1 departamento pode conter muitos funcionários.
  5. Ea chave primária da entidade/classe Departamento é composta pelo id do departamento e pelo id do funcionário.
Revelar gabarito e comentário

GabaritoD — há um relacionamento com cardinalidade 1-para-muitos entre as classes Departamento e Funcionario, ou seja, 1 departamento pode conter muitos funcionários.

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: anotação @OneToMany

Gabarito: letra D. A anotação @OneToMany na classe Departamento indica que um departamento possui muitos funcionários, exatamente como descrito na alternativa D. O atributo mappedBy = "departamento" mostra que o lado inverso (Funcionario) é o proprietário da associação.

Alternativa A — ❌ Incorreta

A anotação está no lado Departamento; ela não garante que a partir de um funcionário se obtenha os departamentos. Para isso, seria necessária uma anotação @ManyToOne (ou @OneToMany) na classe Funcionario.

Alternativa B — ❌ Incorreta

Inverte a cardinalidade. A anotação @OneToMany em Departamento significa que 1 departamento pode ter muitos funcionários, não 1 funcionário ter muitos departamentos.

Alternativa C — ❌ Incorreta

Ambos os fetch types (EAGER e LAZY) são válidos em JPA. EAGER carrega os relacionados imediatamente; LAZY carrega sob demanda. Não há incorreção no uso de EAGER.

Alternativa D — ✅ Correta ⟵ GABARITO

Exatamente o que a anotação expressa: @OneToMany estabelece um relacionamento 1 para muitos entre Departamento e Funcionario, ou seja, 1 departamento pode conter muitos funcionários.

Alternativa E — ❌ Incorreta

A anotação não sugere chave primária composta. O mappedBy indica que a chave estrangeira está na tabela Funcionario, mas a chave primária de Departamento permanece simples (um único campo id, normalmente).

PEGA ESSA DICA!

Em provas de JPA/Hibernate, atenção ao lado proprietário: quem tem mappedBy é o lado não proprietário (o que não possui a chave estrangeira). A cardinalidade lê-se sempre da classe onde a anotação está: @OneToMany nela significa 1 para muitos a partir dessa entidade.

Gabarito: letra D

Link permanente: /questoes/fc061111