Considere uma arquitetura que utiliza o Hibernate 7.2/Jakart...
Assinale a alternativa que apresenta a anotação CORRETA que deve ser utilizada.
Comentários
Veja os comentários dos nossos alunos
A alternativa CORRETA é a A) @Inheritance(strategy = InheritanceType.JOINED).
Justificativa:
No Jakarta Persistence / JPA (e no Hibernate), existem três estratégias principais de herança mapeadas pelo enum InheritanceType:
JOINED (Tabela por Classe Concreta com Junção / Normalizada):
Comportamento: Cria uma tabela para a superclasse (Mamifero) e uma tabela para cada subclasse (Cachorro e Gato).
Relacionamento: As tabelas das subclasses contêm apenas os seus atributos específicos e mantêm uma Chave Estrangeira (FK) apontando para a Chave Primária (PK) da tabela pai (Mamifero).
Encaixe no enunciado: Atende exatamente ao requisito "exista uma tabela para cada entidade. As tabelas Cachorro e Gato devem fazer referência à tabela Mamífero".
Por que as outras alternativas estão incorretas?
B) SINGLE_TABLE: Mapeia toda a hierarquia de classes em uma única tabela no banco de dados, utilizando uma coluna discriminadora para identificar o tipo da entidade.
C) TABLE_PER_CLASS: Cria tabelas independentes para cada classe concreta contendo todos os atributos (da superclasse e da subclasse na mesma tabela), sem que haja relacionamento ou referência (FK) entre as tabelas no banco.
D) SPECIALIZED_SUPERCLASS: Não é uma estratégia válida de herança na anotação @Inheritance. O conceito relacionado no JPA é @MappedSuperclass, onde a superclasse não possui tabela própria.
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo