Pessoal, estou desenvolvendo um projeto que possui herança de classes e preciso persistir os dados dessas classes no banco de dados, porém não sei a maneira correta de fazer isso.
Nesse projeto tenho 5 classes citadas a seguir:
Palavra, que é a super classe do projeto.
Substantivo, Artigo, Pronome e Verbo que herdam de palavra.
No banco de dados o que desejo é armazenar os dados de todas essas classes em uma única tabela chamada palavra, pois todos esses objetos são realmente palavras. Porém estudando um pouco o Hibernate vi que tenho que anotar as classes que desejo persistir com @Entity. Cada subclasse possui atributos específicos, por exemplo, a classe Verbo possui um atributo tempoVerbal, que no banco de dados desejo que torne-se uma coluna da tabela Palavra.
Aí vem minha dúvida, devo mapear todas as classes com @Entity ou apenas a classe Palavra?
Caso eu esteja pensando errado na modelagem das classes aceito sugestoes, rsrs.
pbjunior2, pesquisei sobre essas estratégias e no meu caso o que desejo conseguirei com @Inheritance(strategy= InheritanceType.SINGLE_TABLE) .
Mas apenas um esclarecimento. Com a estratégia @Inheritance(strategy= InheritanceType.TABLE_PER_CLASS) que você mencionou, o Hibernate NÃO criará no banco APENAS a superclasse, criando as demais, correto?
No meu caso, ele criaria as classes Substantivo, Artigo, VErbo e Pronome, com cada uma contendo os atributos de Palavra, certo?
eu acho legal adotar a estratégia SingleTable em casos onde não tem muitos atributos diferentes entre as classes filhas.
provavelmente, pelo case que você tá propondo, também me parece se encaixar nesse quadro.