Até aonde vai e quando devemos usar esse conceito de mapeamento de heranças do hibernate ? Por exemplo:
Temos a tabela Pessoa e a tabela de Usuario, sendo que no hibernate nos teremos a classe Pessoa, e a classe Usuario que extende a classe Pessoa.
Até então… qual o sentido dessa pratica ? separar informações ? carregar menos dados ?
Em vista dessa pratica, eu tb poderia fazer o seguinte:
Uma tabela cliente, telecom, informatica, advocacia e estetica.
Portanto eu teria no hibernate uma classe Cliente e todas as demais classes telecom, informatica advocacia e estetica iriam extender a classe Cliente ! pois assim teriamos classificados todos como clientes… mas alguns seriam clientes referente a telecom, outros a advocacia e assim por diante.
Esse conceito é correto ? por favor, poderiam me fornecer mais exemplos ? pois se for assim eu consigo imaginar um monte de casos aonde eu posso usar isso, e nunca mais vou usar flag nas minhas tabelas
Opa camarada, primeiro de td… tu sabe como eh q se faz um mapeamento de heranças em tabelas? por que na verdade, o hibernate soh ta aí pra fazer o mesmo q a gente faria na mao…, com mto mais trabalho…, de maneira bem simples 
veja, existem 3 possibilidades pra se fazer herança num banco de dados relacional…
[list]
- um tabelão gigante… contendo todos os tipos de dados dos objetos…;
- uma tabela para cada tipow de classe filha, repetindo os campos da classe mãe;
- uma tabela para cada tipo de objeto usando chaves estrangeiras, muito mais legal do ponto de vista relacional… (a minha preferida pelo menos)
[/list]
O nosso amigo hibernate, implementa essas tres possibilidades de herança.
No hibernate ficaria assim:
para o tabelao… teriamos :
<subclass name="Nome da SubClasse" discriminator-value="X">
...
</subclass>
Para uma tabela para cada classe:
<class name="ClasseConcreta" table="tabela">
<id name="id" type="long" column="tabela_ID">
<generator class="native"/>
</id>
<property name="propriedades em comum.." column="xpto"/>
...
</class>
e finalmente, por ultimo mas não menos importante:
a estratégia relacional, onde temos as chaves estrangeiras…:
<joined-subclass name="NomeDaSubClasse" table="tabela">
<key column="tabela_ID"/>
...
</joined-subclass>
Opa… brigadão… mas sei sim como fazer um mapeamento de heranças em tabelas !
O que na verdade eu tenho duvidas é quando usar ! pois como estou criando as tabelas, ou eu crio da primeira forma que vc disse:
um tabelão gigante… contendo todos os tipos de dados dos objeto
Ae eu teria uma tabela gigante contendo todos os dados dos clientes, seja eles clientes relacionados a informatica, telecom ou advocacia.
Ou usaria a terceira opção que vc disse:
uma tabela para cada tipo de objeto usando chaves estrangeiras, muito mais legal do ponto de vista relacional
Ae entao eu teria as tabelas como descrevi no começo
cliente, telecom, informatica, advocacia e estetica
Sendo que a tabela de Clientes teriam dados default que todos os clientes tem, e as outras tabelas teriam objetos que somente aquelas tabelas teriam !
Pois estão… vai denovo a pergunta… até onde usar esse conceito ? é certo o que eu fiz ? isso aumenta a perfomance ?