Pular para o conteúdo principal

Questão de Programação — JEE (Java Enterprise Edition) — FGV 2026

ProgramaçãoJEE (Java Enterprise Edition)
Código
gp003698
Banca
FGV
Órgão
TJ-SC
Ano
2026
Cargo
Analista de Sistemas
Em um sistema corporativo desenvolvido em Java, a equipeprecisa persistir entidades de domínio em um banco de dadosrelacional, utilizar uma implementação concreta para oMapeamento Objeto-Relacional, manter histórico das alteraçõesrealizadas em determinadas entidades e controlar a evolução doesquema do banco de dados entre os ambientes dedesenvolvimento, homologação e produção. Com base nesse cenário, analise as seguintes afirmativas: I. A Java Persistent API (JPA) define uma especificação parapersistência objeto-relacional em aplicações Java, permitindoo mapeamento de classes e relacionamentos para estruturasde bancos relacionais. II. O Hibernate pode atuar como implementação da JPA,fornecendo mecanismos concretos de ORM para persistência,consultas e sincronização entre objetos Java e tabelasrelacionais. III. O Hibernate Envers é utilizado para controlar migraçõesversionadas do esquema do banco de dados, enquanto oFlyway registra o histórico das alterações realizadas nasentidades persistentes. Está correto o que se afirma em
  1. AI, apenas.
  2. BII, apenas.
  3. CI e II, apenas.
  4. DII e III, apenas.
  5. EI, II e III.
Revelar gabarito e comentário

GabaritoC — I e II, apenas.

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, Hibernate e Hibernate Envers: especificação, implementação e auditoria

Gabarito: letra C. Estão corretas as afirmativas I e II: a JPA é a especificação Java para persistência objeto-relacional, e o Hibernate é uma implementação concreta dessa especificação. A afirmativa III está incorreta porque inverte as funções: o Hibernate Envers é que registra o histórico de alterações (auditoria), enquanto o Flyway é a ferramenta de controle de migrações versionadas do esquema do banco.

O cenário da questão descreve três necessidades típicas de um sistema corporativo Java: persistir entidades em banco relacional, usar uma implementação concreta de ORM e controlar tanto o histórico de alterações quanto a evolução do esquema. Para entender a resposta, é preciso separar três conceitos que costumam se misturar: a especificação (o que define o padrão), a implementação (quem executa o padrão) e as ferramentas auxiliares (quem resolve problemas específicos ao redor da persistência).

A JPA (Java Persistence API) é uma especificação — um conjunto de interfaces, anotações e regras — que padroniza o mapeamento objeto-relacional em Java. Ela define como classes Java (entidades) e seus relacionamentos são mapeados para tabelas de um banco relacional, além de estabelecer uma linguagem de consulta própria (JPQL) e o conceito de EntityManager para gerenciar o ciclo de vida das entidades. Por ser uma especificação, a JPA não funciona sozinha: ela precisa de uma implementação concreta que execute o que foi definido.

O Hibernate é exatamente essa implementação. Ele é um framework ORM que implementa a especificação JPA, fornecendo os mecanismos concretos de persistência, consulta e sincronização entre objetos Java e tabelas relacionais. Quando um desenvolvedor usa EntityManager ou anotações como @Entity e @Table, é o Hibernate (ou outra implementação, como EclipseLink) que traduz essas instruções em SQL e gerencia o estado das entidades no banco.

Agora, as ferramentas auxiliares: o Hibernate Envers é um módulo do Hibernate voltado para auditoria — ele mantém um histórico das alterações realizadas nas entidades persistentes, registrando versões anteriores dos dados. Já o Flyway é uma ferramenta de migração de banco de dados — ela controla a evolução do esquema (criação e alteração de tabelas, por exemplo) por meio de scripts versionados, garantindo que os ambientes de desenvolvimento, homologação e produção fiquem sincronizados. A afirmativa III troca exatamente essas duas funções.

NÃO CAIA NESSA!

A banca inverte as responsabilidades do Hibernate Envers e do Flyway. O candidato que sabe que ambos existem, mas não distingue suas funções, marca a alternativa E. Lembre-se: Envers = auditoria (histórico de alterações); Flyway = migração (evolução do esquema). Essa inversão é o coração da questão.

Ferramenta/Especificação

Papel

Função principal

JPA

Especificação

Padroniza o mapeamento objeto-relacional (ORM) em Java

Hibernate

Implementação da JPA

Fornece mecanismos concretos de persistência, consulta e sincronização

Hibernate Envers

Módulo auxiliar

Auditoria: mantém histórico de alterações nas entidades

Flyway

Ferramenta auxiliar

Migração: controla a evolução versionada do esquema do banco

Persistência Java
  • 1JPA (especificação)
    • Mapeamento ORM
    • JPQL e EntityManager
  • 2Hibernate (implementação)
    • Persistência e consultas
    • Sincronização objeto-tabela
  • 3Ferramentas auxiliares
    • Envers (auditoria)
      • histórico de alterações
    • Flyway (migração)
      • evolução versionada do esquema
LEVEL · soulevel.com.br

Item I — ✅ Correto

A afirmativa descreve corretamente a JPA como uma especificação para persistência objeto-relacional, permitindo o mapeamento de classes e relacionamentos para estruturas de bancos relacionais. É exatamente o papel da JPA dentro da plataforma Java: padronizar o acesso a banco de dados por meio do mapeamento Objeto/Relacional.

Item II — ✅ Correto

O Hibernate atua como implementação da JPA, fornecendo mecanismos concretos de ORM para persistência, consultas e sincronização entre objetos Java e tabelas relacionais. Essa é a função central do Hibernate: ser a implementação que dá vida à especificação JPA.

Item III — ❌ Incorreto

A afirmativa inverte as funções. O Hibernate Envers é o módulo responsável por manter o histórico das alterações realizadas nas entidades persistentes (auditoria), enquanto o Flyway é a ferramenta que controla migrações versionadas do esquema do banco de dados. A troca de papéis torna a afirmativa falsa.

Conclusão: corretos apenas os itens I e II → letra C.

Gabarito: letra C

Link permanente: /questoes/gp003698