2011-02-09 4 views
0

Depuis que j'ai appris sur le SGBDR, j'ai commencé à penser dans le modèle relationnel et moins dans l'orienté objet. Maintenant, j'ai de la difficulté à stocker et à interroger des données dans des structures de données Java. Je veux écrire une application qui a des ensembles d'entités qui se rapportent les uns aux autres, donc j'ai fait de chaque entité sa propre classe. Les attributs de chaque entité sont les variables d'instance. D'accord, je pense que nous sommes bons jusqu'à présent. Title et Game sont toutes les entités. Game ISA Title alors Title doit être la classe parente et Game doit hériter de Title (pensez à Jeu comme copie physique et Titre comme nom du Jeu).Quelle est la meilleure façon de convertir relationnel en objet?

J'ai une série de jeux dans ma classe principale et je peux parcourir si je veux trouver un jeu spécifique. Comment trouver un titre spécifique? Je n'ai pas de jeu de titres parce que le titre est hérité, donc je suppose que je devrais juste parcourir les jeux et quand je trouve le nom d'un titre, ajoutez-le à un ensemble pour ne récupérer que des titres uniques.

Le jeu est mutable (isBought peut changer) donc utilise un Set a une mauvaise idée? Quelle est la meilleure façon de créer des ensembles d'entités en Java? Utiliser une carte au lieu d'un ensemble pour mapper un identifiant à un objet?

Répondre

4

La résolution de l'écart objet-relationnel n'est pas une tâche facile. Il existe des frameworks ORM (mapping objet-relationnel) qui font cela. Mais ils ont une courbe d'apprentissage. Hibernate et EclipseLink sont deux implémentations de la norme ORM en Java - JPA (java persistance API).

+0

J'ai vu ceux dans les autres questions connexes mais je ne cherchais pas à convertir quelque chose avec un logiciel. J'ai juste besoin de convertir mon esprit. Je pense dans le mauvais sens et je voulais voir comment quelqu'un d'autre pourrait aborder le problème. – styfle

+0

@styfle les concepts d'ORM vous aideront à mapper les deux (RDBMS, OOP). – Bozho

+1

@styfle, le problème que les deux idées travaillent ensemble dans votre tête a été assez de problèmes pour d'autres, il a un terme "impédance incompatibilité", les outils ORM vous permettent de travailler avec des bases de données en Java de façon très naturelle. – Quaternion

0

Il n'y a pas d'écart fondamental entre les modèles relationnels et OO. Le modèle de données relationnel est un système de types qui prend en charge les types de relation et les opérateurs relationnels (ainsi que d'autres types). Un modèle de données OO est un système de type qui prend en charge l'héritage. L'erreur que les gens font souvent en considérant ces paradigmes est d'assimiler les types (classes) en termes OO avec les relations ou les tuples dans le modèle relationnel. Date et Darwen appellent cela le First Great Blunder. La réalité est beaucoup plus simple que cela. Les types sont des types, à la fois dans le modèle relationnel et le modèle OO. Les deux paradigmes sont orthogonaux et complémentaires l'un de l'autre, ils ne s'excluent pas mutuellement. Ce que la très mauvaise correspondance OO/RM signifie vraiment, c'est qu'un programmeur souhaite implémenter certains modèles de transformations que ses outils logiciels ne supportent pas facilement. Le modèle relationnel n'est pas à blâmer. Les fabricants de logiciels sont.

Questions connexes