2010-10-19 11 views
1

Je prévois de créer une application reposant sur DB utilisant Hibernate. Je vais avoir des cours similaires comme professeur et étudiant et ainsi de suite. En DB, ils auront des champs avec des noms similaires. Donc, je me demande si je peux créer une classe humaine avec des annotations pour les champs standard comme Nom, SName et ainsi de suite afin d'étendre cette classe dans les étudiants en enseignement et ainsi de suite. Est-ce que ça marchera? Est-ce que quelqu'un l'utilise de cette manière? Hibernate a un support étendu pour différents scénarios impliquant l'héritage et le polymorphisme.Sur les classes abstraites dans les annotations Java et Hibernate

Répondre

3

Je dirais que l'enseignant et l'élève ne sont pas des sous-catégories humaines, mais plutôt des rôles qu'un humain peut jouer. Si vous en faites des sous-classes, vous dites effectivement que l'enseignant ne peut jamais être un étudiant et vice versa. Aussi, si l'on passe d'un étudiant à l'enseignant (ou vice versa), alors vous perdez toute association et histoire pour cet objet. Tenez compte des rôles à la place. Considérez la composition et la délégation au lieu de l'héritage dans cet exemple. Jetez un coup d'œil au livre de Peter Coad: Java Design pour en savoir plus. En outre, vous voulez penser à l'implémentation de table si vous décidez d'utiliser l'héritage: table unique (avec des colonnes nulles pour le sous-type attribs) table séparée ou table unique pour super classe et tables séparées pour sous-classes.

+0

Joindre des tables serait un vrai problème pour moi - je veux utiliser le moteur de l'application Google ... – Rella

Questions connexes