2011-08-22 4 views
1

Supposons que vous souhaitiez implémenter un Data Access Layer qui prend soin d'enregistrer votre objet (java) dans un magasin de données. Un modèle dans votre magasin représente une entité (table en sql), une entité a des membres qui contiennent des informations sur l'entité elle-même ou une relation avec une entité parente (par exemple, parentId).DAL-> Conception :: simple par rapport au modèle oop && propriété par rapport à la méthode

Maintenant il y a ces cas:

  1. le modèle a des membres avec des types de données simples (int, char, String). C'est le cas le plus utilisé? Vos membres sont fortement typés et accessibles en toute sécurité dans toute l'application, mais vous avez besoin d'un dal pour chaque entité.

  2. comme ci-dessus, mais pour plus de simplicité et d'extensibilité, vous avez choisi d'implémenter votre modèle en tant que carte. Ceci est similaire à l'API Datastore d'AppEngine. Vos membres sont accédés par nom dans votre application, mais vous avez un seul dal générique et toutes les entités sont facilement extensibles.

  3. le modèle a d'autres modèles comme membres, nous appelons le modèle complet. cette fois, vous pouvez obtenir toutes les entités relationnelles à l'intérieur de votre modèle. La couche DAL est moins flexible et vous pouvez augmenter ou diminuer les problèmes de cohérence, mais vous pouvez désormais utiliser la POO au maximum au niveau du modèle.

J'espère que je n'ai pas manqué quelque chose ci-dessus. Selon votre expérience, quel est selon vous le meilleur environnement pour la meilleure approche? pense pas énorme application d'entreprise, mais plutôt projet standard.

Merci!

Répondre

2

Je vous recommande de lire sur le modèle aggregates dans le cadre de DDD (design piloté par domaine). L'idée de base est de diviser votre modèle d'entité complet en groupes logiques, puis de fournir repositories pour chaque racine agrégée (l'entité principale du groupe) qui enregistre toutes les entités qui forment l'agrégat. Cela permet une utilisation complète de la POO sans porter atteinte aux problèmes de cohérence. En général, j'ai trouvé que c'était l'approche la plus «organisée».

+0

il semble que nous pouvons utiliser des agrégats pour ce faire: - définir un modèle de voiture abstrait - définir un 4x4 et un modèle de berline, héritant les membres de la voiture - utiliser des agrégats pour stocker les deux –

Questions connexes