Questão correta, pois realmente existem 3 formas de mapear herança com o Hibernate:
1) Uma tabela por classe concreta
- Dados não normalizados
- Depende de um UNION para consultas na superclasse.
- Ideal para hierarquias horizontais
2)Uma única tabela para toda hierarquia de classes
- Utiliza discriminator para diferenciar elementos da hierarquia.
- Queries são feitas em uma única tabela, que pode se tornar bastante grande.
- Modelo mais simples. Modelo default. Ideal para hierarquias com poucas classes.
3)Uma tabela por classe da hierarquia
- Permite associações e consultas polimórficas
- Dados normalizados. Sempre realiza join.
- Usado em hierarquias de muitos níveis (verticais).
Bons estudos!
Mesmo acertando, ainda achei a questão um pouco confusa se olhar ao "pé da letra" ou possíveis ambiguidades.
A questão ainda está levemente mal descrita.
Pois classes concretas podem ser apenas subclasses de uma classe abstrata.
Quando ele fala subclasses, chegamos a uma mesma conclusão da afirmativa feita acima, dando exatamente na mesma coisa.
Hierarquia, não tem nem o que falar.
Creio que a descrição abaixo seria mais adequada.
Tabela única para todas as classes (single table)
Uma tabela para cada classe da hierarquia (joined)
Uma tabela para cada classe concreta (table per class)