-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 6 posts ] 
Author Message
 Post subject: Stratégie de mapping de l'héritage
PostPosted: Tue Aug 02, 2005 11:08 am 
Newbie

Joined: Tue Aug 02, 2005 10:47 am
Posts: 3
Dans une modelisation objet j'ai 3 types d'objets : A, B et C héritant tous de la super-classe abstraite S.

Or la classe S est en relation avec elle meme car n'importe lequel des objets peut etre en relation avec un ou plusieurs autres objets.

Dans la BD ma modelisation représente une table par objet concret.

Je me suis donc tourne vers la stratégie "table per concret class" mais ca va pas aller puisque ma BD ne stockera pas dans ce cas les relations inter-objets.

Moralité, je sais pas quelle stratégie choisir. Si quelqu'un a une idée je suis preneur

Voici les chose plus concretement :

Code:
table A (id integer, nom string)
table B (id integer, date timestamp)
table C (id integer, nb integer)


Code:
// pas d accesseurs c plus court ;-)
public abstract class S
{
private int id
private List relatedObjects = new ArrayList(); // Of type S
}

public class A extends S
{
private String nom;
}
public class B extends S
{
private Date date;
}
public class C extends S
{
private nb integer;
}


mon probleme est donc comment mapper dans la BD cette relation inter-objets contenu dans la classe S.

j espere avoir ete clair.

_________________
--
Waddle
EPITA Student - MMA 2006
Server Admin - Member of MandrivaClub


Top
 Profile  
 
 Post subject:
PostPosted: Tue Aug 02, 2005 11:13 am 
Expert
Expert

Joined: Thu Sep 04, 2003 8:23 am
Posts: 368
Le mieux est de te tourner vers la stratégie table per subclass et de créer une table S qui contiendra ton lien réentrant

Seb


Top
 Profile  
 
 Post subject:
PostPosted: Tue Aug 02, 2005 11:22 am 
Newbie

Joined: Tue Aug 02, 2005 10:47 am
Posts: 3
c une bonne idée mais alors j ai deux questions :

- je mes quoi comme relation entre la table S et les autres, 1,1 - 1,1 ?
- En utilisant cette stratégie je me retrouve a faire un fichier de mapping pour S. Mais hibernate va-t-il me laisser faire sachant que S est abstraite ?

_________________
--
Waddle
EPITA Student - MMA 2006
Server Admin - Member of MandrivaClub


Top
 Profile  
 
 Post subject:
PostPosted: Tue Aug 02, 2005 11:28 am 
Expert
Expert

Joined: Thu Sep 04, 2003 8:23 am
Posts: 368
Ta relation entre les classes est une relation d'héritage. Cela correspond au chapitre 10.1.2 de la doc hibernate 3.0.5 non ?
Il n'y a pas de pb particulier à faire un fichier de mapping pour une classe abstraite

Seb


Top
 Profile  
 
 Post subject:
PostPosted: Tue Aug 02, 2005 11:40 am 
Newbie

Joined: Tue Aug 02, 2005 10:47 am
Posts: 3
ok pour le mapping d'une classe abstraite, j'essaierai, j'espère que tu as raison.

Pour la relation je parlais bien de celle entre mes tables, pas mes classes. Mes classes sont liées par l'héritage je le sais. Par contre quel type de relation relie S a A, S a B et S a C ? une relation one-to-one ?

_________________
--
Waddle
EPITA Student - MMA 2006
Server Admin - Member of MandrivaClub


Top
 Profile  
 
 Post subject:
PostPosted: Tue Aug 02, 2005 11:56 am 
Expert
Expert

Joined: Thu Sep 04, 2003 8:23 am
Posts: 368
La BD est loin d'être ma spécialité mais je crois que les liens 1-1 n'existent pas en BD. Pour ma part j'ai une table pour la classe mère. Une table pour la classe fille avec la même pk et une fk de la table fille qui pointe sur la table mère. C'est généré automatiquement par hibernate si tu lui laisses créer ton schema (tu peux tout au moins voir ce qu'il te propose)

seb


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 6 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.