Questão nº 33
Questão de Tecnologia da Informação · FCC TRT19 2022 (nº 33)
Considere a classe abaixo em uma aplicação que utiliza JPA e Hibernate.
```
@Entity
public class Cliente {
@Id
@GeneratedValue(strategy = GenerationType.
I
)
private Long id;
// atributos e métodos restantes
}
```
Para informar ao provedor de persistência que os valores a serem atribuídos ao identificador único (id) serão gerados pela coluna de autoincremento da tabela do banco de dados, utiliza-se, na lacuna I, o valor
- A`TABLE`
- B`AUTO_GENERATED`
- C`AUTO_INCREMENT`
- D`IDENTITY` (alternativa correta)
- E`SELF_GENERATED`
Resposta comentada
Gabarito Alternativa D
O `@GeneratedValue` em JPA permite que o banco de dados ou o provedor de persistência (como o Hibernate) crie automaticamente os valores para o identificador único (ID) de uma entidade. O `GenerationType` define a estratégia usada para essa geração.
(A) Incorreta: `TABLE` é uma estratégia de geração de IDs que utiliza uma tabela separada no banco de dados para armazenar e gerenciar os valores dos identificadores, não o autoincremento de uma coluna.
(B) Incorreta: `AUTO_GENERATED` não é um valor válido para `GenerationType` em JPA.
(C) Incorreta: `AUTO_INCREMENT` é o termo usado por alguns bancos de dados (como MySQL) para descrever a funcionalidade de autoincremento de colunas, mas não é um valor válido para `GenerationType` em JPA. Armadilha da banca: Esta alternativa é muito tentadora porque o termo `AUTO_INCREMENT` descreve exatamente o comportamento desejado, mas a enumeração `GenerationType` do JPA usa o termo `IDENTITY` para essa estratégia.
(D) Correta: `IDENTITY` é a estratégia de geração de IDs em JPA que indica ao provedor de persistência para usar a funcionalidade de autoincremento da coluna do banco de dados (como `IDENTITY` no SQL Server, `AUTO_INCREMENT` no MySQL ou `SERIAL` no PostgreSQL) para gerar os valores do identificador.
(E) Incorreta: `SELF_GENERATED` não é um valor válido para `GenerationType` em JPA.
Fonte: FCC TRT19 2022 Analista Judiciário - Área Apoio Especializado - Especialidade Tecnologia da Informação (Caderno Tipo 001). Reproduzida para fins de estudo.