Herança ou Composição Hibernate

Boa tarde pessoal,

Seguinte…

Estou desenvolvendo um sistema em Java (JSE) e Hibernate, e agora mais especificamente o módulo de Controle de Patrimonio (Veiculos e Equipamentos).

Basicamente para vocês entenderem o “funcionando” desse módulo seria assim:

O usuário precisa controlar os custos desses patrimônios, por exemplo: manutenções / abastecimentos / peças e etc…

No módulo de compras permito que o pedido de compra seja direcionado para um determinado centro de custo / departamento e agora também pode ser uma compra direcionada para um patrimônio, que por sua vez pode ser um equipamento ou um veiculo (por enquanto).

Tendo isso como base (se é que consegui explicar… rsrs) qual seria a melhor forma de mapear essas entidades de patrimônio, com herança ou composição? De maneira que eu possa controlar o custo de cada patrimônio, e também saber qual o “tipo” desse patrimônio.

Herança

@Entity  
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)  
@DiscriminatorColumn(  
    name = "tipo",  
    discriminatorType = DiscriminatorType.STRING  
)  
@DiscriminatorValue("P")  
public class Patrimonio {  

    @Id  
    @GeneratedValue  
    private Integer id;  

    private Long codigo;  

}  

@Entity  
@DiscriminatorValue("V")  
public class Veiculo1 extends Patrimonio{  

    //atributos especifico do equipamento  

}  

@Entity  
@DiscriminatorValue("E")  
public class Equipamento1 extends Patrimonio {  

    //atributos especifico do patrimonio

}

Ou usando composição?

Certo de vossas atenções… Antecipo meus agradecimento…

Leonardo Brancalhão.

Mas entendo que um patrimônio é uma parte de um Centro de Custos, assim como despesa e pedido de compra… Não?

Sim, até poderia ser, mais não existe relação/composição entre centro de custo e quais os patrimônios desse centro de custo…

Mas aí existe uma brecha na análise.
Vamos dizer que o centro de custo A possui o patrimônio AB. Como vou comprovar que o pedido de compra é do patrimônio AB e do centro de custo A?

Existe uma entidade/tabela chamada Custo que armazena essas informações Empresa / Centro de Custo / Departamento (do centro de custo) / pedido de compra / origem da compra (Material / Serviço / ETC) / valor / entre outras informações.

É exatamente ai que gostaria de chegar, ao invés de guardar um veiculo ou equipamento nessa tabela, gostaria de guardar um PATRIMÔNIO.

Não sei se fui claro, qualquer coisa questione que assim ajuda eu rever minha análise.

:smiley: vlw !

Mais nenhuma opinião?

UP ! :smiley: