Questão nº 25
Questão de Tecnologia da Informação · FCC TRT5 2022 (nº 25)
Atenção: O Modelo Entidade-Relacionamento abaixo deve ser utilizado para responder as questões de números 21 a 25.
Em uma aplicação que utiliza JPA e Hibernate, em condições ideais, a codificação correta do trecho que define o atributo da classe Login.java, que é chave primária na tabela Login do Modelo Entidade-Relacionamento é
Este texto de apoio vale também pra questão nº 21, questão nº 22, questão nº 23, questão nº 24.
- A```
@Pk
@NotNull(false)
@ColumnName("emailFuncionario")
private String emailFuncionario;
``` - B```
@Id
@Basic(optional = true)
@JoinColumn(field = "emailFuncionario")
private String emailFuncionario;
``` - C```
@PrimaryKey
@Basic(required = true)
@Field(name = "emailFuncionario")
private String emailFuncionario;
``` - D```
@Pk
@Basic(required = true)
@Column(name = "emailFuncionario")
private String emailFuncionario;
``` - E```
@Id
@Basic(optional = false)
@Column(name = "emailFuncionario")
private String emailFuncionario;
``` (alternativa correta)
Resposta comentada
Gabarito Alternativa E
Em JPA e Hibernate, a chave primária de uma tabela é o campo que identifica unicamente cada registro. Para mapear esse campo em uma classe Java, usamos a anotação `@Id` e, geralmente, `@Column` para especificar o nome da coluna no banco de dados.
(A) Incorreta: `@Pk` não é uma anotação padrão JPA para chave primária; o correto é `@Id`. `@NotNull(false)` é uma anotação de Bean Validation, não JPA, e `false` indicaria que o campo pode ser nulo, o que é incorreto para uma chave primária. `@ColumnName` não é uma anotação padrão JPA; o correto é `@Column(name = "...")`. Armadilha: O uso de `@NotNull(false)` é confuso; `@NotNull` é de validação, não de mapeamento JPA, e `false` sugere que o campo pode ser nulo, o oposto do que uma chave primária exige.
(B) Incorreta: Embora `@Id` esteja correto, `@Basic(optional = true)` indica que o campo pode ser nulo, o que é inválido para uma chave primária. Além disso, `@JoinColumn` é usado para mapear chaves estrangeiras (FKs), não para um atributo simples de chave primária.
(C) Incorreta: `@PrimaryKey` não é uma anotação padrão JPA; o correto é `@Id`. `@Basic(required = true)` usa um atributo `required` que não existe na anotação `@Basic` padrão JPA (o correto seria `optional = false`). `@Field` não é uma anotação padrão JPA para mapeamento de coluna; o correto é `@Column(name = "...")`.
(D) Incorreta: `@Pk` não é uma anotação padrão JPA; o correto é `@Id`. `@Basic(required = true)` usa um atributo `required` que não existe na anotação `@Basic` padrão JPA.
(E) Correta: `@Id` é a anotação padrão JPA que marca o campo como a chave primária da entidade. `@Basic(optional = false)` explicitamente define que o campo não pode ser nulo, o que é uma característica essencial de uma chave primária (embora `@Id` já implique isso). `@Column(name = "emailFuncionario")` mapeia o atributo Java `emailFuncionario` para a coluna do banco de dados com o nome `emailFuncionario`, garantindo a correspondência correta.
Fonte: FCC TRT5 2022 Analista Judiciário - Área Apoio Especializado - Especialidade Tecnologia da Informação (Caderno Tipo 001). Reproduzida para fins de estudo.
