2009-04-13 7 views
3

Obtenir des données d'une table de base de données à un objet dans le code a toujours semblé être du code banal. Il y a deux façons j'ai trouvé pour le faire:Code de mappage de données ou code de réflexion?

  1. ont un générateur de code qui lit une table de base de données et crée la classe et contrôleur pour cartographier les zones de données à l'utilisation des champs de classe ou
  2. réflexion pour prendre la champ de base de données et le trouver sur la classe.

Les problèmes constatés avec les 2 méthodes ci-dessus sont indiquées ci-dessous

  • Méthode 1 me semble que je manque quelque chose parce que je dois créer un contrôleur pour chaque table.
  • La méthode 2 semble être trop laborieuse une fois que vous entrez dans le code d'accès de données lourdes .

Y a-t-il une troisième route que je devrais essayer d'obtenir des données d'une base de données sur mes objets?

+0

Il serait bon de spécifier la plate-forme/langage de programmation que vous envisagez; La réponse peut être dépendante de la plateforme. – StaxMan

Répondre

1

Je pense que la réponse à cela dépend des technologies disponibles pour la langue que vous allez utiliser. Pour ma part, je suis très réussi avec l'utilisation d'un ORM (NHibernate) donc naturellement je peux recommander l'option un.

Il y a d'autres options que vous pouvez souhaiter prendre si:

  • Si vous utilisez .NET, vous pouvez choisir d'utiliser des attributs pour les propriétés de votre classe pour servir soit comme une application dans une classe, ou En tant que données pouvant être reflétées
  • Si vous utilisez .NET, Fluent NHibernate rendra très facile la création de mappages de type sécurité dans votre code.
  • Vous pouvez utiliser des génériques de sorte que vous n'ayez pas besoin de faire un contrôleur pour chaque table, bien que j'admette qu'il est probable que vous fassiez ce dernier de toute façon. Cependant, les génériques peuvent contenir la plupart des méthodes CRUD générales communes à toutes les tables, et vous n'aurez besoin de coder que des bizarreries spécifiques.
0

J'utilise la réflexion pour mapper les données d'avant en arrière et cela fonctionne bien même sous un accès de données lourd. La "troisième voie" consiste à tout faire manuellement, ce qui peut être plus rapide à exécuter mais très lent à écrire.

3

Vous utilisez normalement des mappeurs OR (Object-Relational) dans de telles situations. Un bon cadre fournissant la fonctionnalité OU est Hibernate. Est-ce que cela répond à votre question?

0

Je suis d'accord avec lewap, un ORM (objet-relationnel mapper) aide vraiment dans ces situations. Vous pouvez également considérer le modèle Active Record (décrit dans le livre Patterns of Enterprise Architecture de Fowler). Il peut vraiment accélérer la création de la DAL dans des applications simples.

Questions connexes