6
votes

ORM est-il un problème spécifique à la programmation orientée objet?

Mappage d'objet-relationnel, ORM est un problème à résoudre dans toutes les applications implémentées dans un langage de programmation orienté objet et utilise une base de données relationnelle.

Mais n'est-ce pas le problème si vous utilisez des structures pour cartographier des bases de données relationnelles en C? Et des tuples / enregistrements dans une langue de programmation fonctionnelle? Ou est-ce que je manque quelque chose depuis que je n'ai pas écrit une application de base de données en C ou dans une langue fonctionnelle.

orm

0 commentaires

4 Réponses :


3
votes

Les principaux problèmes dans ORM ne sont pas de gérer les fonctions simples, telles que la cartographie de la colonne "x" au champ de structure "x". Cela peut être fait par plusieurs astuces (macros, code général, réflexion, etc.).

Le problème est de la manière de gérer des fonctionnalités de OOP tels que l'héritage, la composition, les références, l'unicité, les interfaces, etc. L'héritage est une chienne dans ce sens, car sa mise en œuvre naïve comme plusieurs tables n'est pas optimale.


0 commentaires

6
votes

anecdotage, au moins, cette "inadéquation d'impédance" semble être particulière aux situations où l'on souhaite pousser des relations dans un objet d'objet.

in C, la plupart des API de base de données ont tendance à exposer des ensembles de résultats sous forme de réseaux multidimensionnels, plutôt que comme des structures. Par conséquent, on accède simplement aux données du même format qu'il existe dans la ou les tableaux de la base de données - c'est sans conséquence qu'il existe maintenant comme une copie locale des données, plutôt que "dans la base de données".

La plupart des bibliothèques de RDBMS fonctionnelles exposent les lignes de base de données sous forme de types d'enregistrement, ce qui correspond à un niveau raisonnablement profond aux lignes de base de données presque parfaitement. Il n'y a pas de "inadéquation d'impédance" dans cette situation.

the L'article Wikipedia sur le sujet semble spéculer sur certaines des raisons pour lesquelles Le paradigme d'objet est particulièrement sensible à cette inadéquation.

Ma conviction est que cela dépend essentiellement du fait que vous construisez toujours une représentation secondaire des données (c'est-à-dire des "objets"). Dans les langues fonctionnelles de la plupart des langues impératives ou (non d'objet), il est moins susceptible de construire une représentation secondaire sémanentiellement permanente de vos données. Si l'on va construire une représentation secondaire dans ce monde, il est plus susceptible d'être une abstraction d'une certaine sorte. Cela correspond à une croyance de base (non fondée) de la mine selon laquelle le paradigme de l'OOP est fondamentalement le marteau proverbial qui fait ressembler à chaque problème d'un clou.


0 commentaires

3
votes

Vous avez 2 inadéquations d'impédance.

  1. enregistrements aux objets.
  2. Votre langue sur les requêtes SQL.

    tandis que la première inadéquation d'impédance pourrait ne pas fonctionner pour toutes les langues non-OOP, la seconde apparaît dans toutes les langues et pourrait être résolue à l'aide de DSL comme on le voit ici


0 commentaires

6
votes

bien, oui et non .

Ce que vous faites référence est connu sous le nom de Mismatch d'impédance d'objet , que est le problème pour transférer des données entre un modèle orienté objet et un modèle d'entité-relation . La difficulté est due aux façons intrinsèquement différentes de structurer et de stocker des informations dans les deux modèles, où oo est hiérarchique tandis que ER est tabulaire .

Mappage d'objet-relation est une technique qui tente de résoudre l'impédance d'objet-relation problème d'inadéquation.

Le terme inadéquation d'impédance relationnelle est spécifique au orienté objet et < Un href = "http://fr.wikipedia.org/wiki/entity-relationhip_model" rel = "Noreferrer"> Entity-relation modèles. Cependant, le mot " impédance " signifie la résistance ou la difficulté, de sorte que le terme " impédance misé " pourrait potentiellement être utilisé pour exprimer le problème général de la mappage entre deux modèles de données incompatibles / type Systèmes.


0 commentaires