Questão de Programação — Linguagens de programação — FCC 2022
Programação›Linguagens 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
Aa partir dos dados de um funcionário podem-se obter os departamentos aos quais ele está associado.
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.
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.
Dhá um relacionamento com cardinalidade 1-para-muitos entre as classes Departamento e Funcionario, ou seja, 1 departamento pode conter muitos funcionários.
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.