# Java > Gnral Java > Persistance des donnes >  Stratgies de mapping d'hritage avec Hibernate / JPA [Tutoriel]

## Ricky81

Bonjour,

Grald Quintana (Objet Direct) vous propose un article sur la problmatique de mapping Objet / Relationnel d'hritages :




> L'hritage est une des notions fondamentales de la programmation oriente objet. La plupart des bases de donnes relationnelles ne connaissent pas cette notion. Nous allons voir dans cet article comment Hibernate essaye de faire le grand cart entre le monde objet et le monde relationnel.


Si vous avez des commentaires / remarques, profitez de ce fil de discussion.

----------


## Khaled.Noordin

@ Grald Quintana
super, merci

----------


## clubist

Bonjour,

merci beaucoup pour ce tutoriel.

j'ai un petit souci concernant la deuxime stratgie: Une table par classe concrte.

Pourquoi on a ajout un champ DTYPE VARCHAR(255) dans chacune des deux tables : voiture et camion alors qu'on sait d'avant la nature d'objet( type de vhicule ) qui sera persist(ou n'importe autre opration CRUD) dans un de ces tables ?

et merci d'avance.

----------


## Ricky81

> Pourquoi on a ajout un champ DTYPE VARCHAR(255) dans chacune des deux tables : voiture et camion alors qu'on sait d'avant la nature d'objet( type de vhicule ) qui sera persist(ou n'importe autre opration CRUD) dans un de ces tables ?


C'est une erreur sur le MPD, la colonne est effectivement inutile. D'ailleurs elle n'apparat pas dans les ordres INSERT.

----------


## DevServlet

Merci pour ce lien, il est trs intuitif.
Seulement je ne suis pas trs d'accord avec :



> C'est une erreur sur le MPD, la colonne est effectivement inutile. D'ailleurs elle n'apparat pas dans les ordres INSERT.


T'as bien ce DTYPE dans ces instructions :


```
INSERT INTO Vehicule (immatriculation, nbPortes, DTYPE, id) VALUES ('1234AB', 5, 'Voiture', 1)
```

A moins qu'on ne se comprenne pas, c'est une colonne obligatoire pour Hibernate, puisque t'as une table par hirarchie d'hritage, Hibernate n'a pas d'autre moyen de distinguer les tables filles, non ?  :8O:

----------


## Ricky81

Tu me parlais de la stratgie "Une table par classe concrte."
Or l tu fais rfrence  un INSERT sur la table Vehicule qui n'a pas d'existence dans cette stratgie.  ::wink::

----------


## DevServlet

Moi je parle bien du paragraphe I-2, une seule table par hirarchie d'heritage, dans la classe Vehicule, Hibernate migrera toutes les colonnes des classes filles et y ajoutera une colonne de distinction. Je ne parle pas du tout du 2e mecanisme d'heritage.

----------


## Ricky81

> Moi je parle bien du paragraphe I-2, une seule table par hirarchie d'heritage, dans la classe Vehicule, Hibernate migrera toutes les colonnes des classes filles et y ajoutera une colonne de distinction. Je ne parle pas du tout du 2e mecanisme d'heritage.


La personne  laquelle j'ai initialement rpondu parlais bien du 2me mcanisme d'hritage.

----------


## DevServlet

Exact  ::ccool:: , autant pour moi.

----------


## Khaled.Noordin

Il aurait t intressant d'avoir le cot sql des crations de tables pour chaque stratgie.

----------


## clemoigno

Bonjour,

Petite question dans le cas de la stratgie une seule table.
Si l'on fait un getAll() sur la classe _Vhicule_ on rcupre donc une liste d'objet _Vehicule_.
Mais ceux-ci, au sein de la liste, sont-il en fait typs plus fortement en _Voiture_ et _Camion_ ou bien faut-il aller chercher tour  tour un getAll() sur Voiture puis sur Camion pour avoir l'ensemble, fortement typ ?

----------

