Herança e mapeamento OR

Estou desenvolvendo uma aplicação em que será necessário criar herança no banco de dados.

A solução com maior aprovação por aquie é de usar várias tabelas, usando relacionamento de 1 pra 1.
Ex de uma loja virtual:

TbProduto
IdProduto
Nome
Descricao
Preco
Fabricante

TbLivro
IdLivro
IdProduto
Paginas

TbDVD
IdDVD
IdProduto
Duracao
Regiao
Tecnologia (Normal, HD-DVD, BlueRay)

Esse é o modelo mais recomendado? O hibernate ou alguma outra ferramenta tem suporte a essa funcionalidade?

Valeu.