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
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.
Consultez la documentation
http://docs.jboss.org/hibernate/stable/core/reference/en/html/inheritance.html
La réponse courte est oui, vous pouvez faire exactement ce que vous voulez - créer une classe de base avec des champs communs aux sous-classes. Le degré de difficulté/d'implication dépend de la façon dont vous structurez les tables.
- 1. Constructeurs dans les classes abstraites?
- 2. Classes abstraites et servlets en Java EE
- 3. Utilisation des génériques dans les classes abstraites
- 4. Classes abstraites dans les relations GORM
- 5. Propriétés dans les classes abstraites Statics
- 6. Sous-classes et classes abstraites dans DDD
- 7. A quoi servent les constructeurs dans les classes abstraites?
- 8. Pourquoi les annotations java?
- 9. Problème avec le modèle de référentiel et les classes abstraites
- 10. Java Generics, Generics étendues et des classes abstraites
- 11. Explication sur les annotations
- 12. Héritage des annotations Hibernate?
- 13. annotations JAXB pour les classes d'attributs groovy
- 14. Classes Java dérivées de Hibernate pour les tables
- 15. mapkit et les annotations
- 16. Champ privé dans les annotations Java
- 17. Structure de classe avec LINQ, classes partielles et classes abstraites
- 18. Comment faire pour découvrir les getters et les setters sur les objets hibernate
- 19. Utilisation des classes abstraites et interfaces
- 20. Les annotations Hibernate en cascade ne fonctionnent pas
- 21. Annotations Hibernate, auto-incrémenté
- 22. Quand les classes abstraites doivent-elles être utilisées?
- 23. Variables abstraites en Java?
- 24. Classes abstraites dans la bibliothèque partagée
- 25. Quand utiliser les classes abstraites et quand utiliser les interfaces en C#
- 26. annotations hibernate, requête hql par des interfaces?
- 27. annotations Hibernate @ManyToMany
- 28. Filtrage uniquement sur les annotations dans Django
- 29. Comment désactiver le chargement paresseux hibernate pour toutes les classes de domaine dans les grails?
- 30. Conserver les annotations sur les proxies CGLIB?
Joindre des tables serait un vrai problème pour moi - je veux utiliser le moteur de l'application Google ... – Rella