J'hésite entre deux conceptions d'un projet de base de données utilisant Hibernate.A propos des objets de données et de la conception DAO lors de l'utilisation d'Hibernate
Modèle # 1.
(1) Créer une interface de fournisseur de données générale, y compris un ensemble d'interfaces DAO et de classes de conteneur de données générales. Il cache l'implémentation en dessous. Une implémentation de fournisseur de données peut accéder à des données dans une base de données, un fichier XML, un service ou quelque chose d'autre. L'utilisateur d'un fournisseur de données ne doit pas le savoir.
(2) Créez une bibliothèque de base de données avec Hibernate. Cette bibliothèque implémente l'interface du fournisseur de données dans (1). La mauvaise chose à propos de la conception n ° 1 est que, pour cacher les détails de l'implémentation, j'ai besoin de créer deux ensembles de classes de conteneur de données. Un dans l'interface générale du fournisseur de données - appelons-les DPI-Objects, l'autre est utilisé dans la bibliothèque de la base de données, exclusivement pour le mappage entité/attribut dans Hibernate - appelons-les H-Objects. Dans l'implémentation DAO, j'ai besoin de lire les données de la base de données pour créer des objets H (via Hibernate) puis convertir les objets H en DPI-Objects.
Modèle # 2.
Ne créez pas d'interface de fournisseur de données générales. Exposez les objets H directement aux composants qui utilisent la base de données lib. L'utilisateur de la bibliothèque de base de données doit donc être conscient de Hibernate. J'aime le design # 1 de plus, mais je ne veux pas créer deux ensembles de classes de conteneur de données. Est-ce la bonne façon de cacher les objets H et les autres détails d'implémentation d'Hibernate à l'utilisateur qui utilise le fournisseur de données basé sur la base de données?
Y at-il des inconvénients de la conception n ° 2? Je n'implémenterai pas d'autres fournisseurs de données dans le nouveau futur, alors devrais-je simplement oublier l'interface du fournisseur de données et utiliser Design # 2?
Que pensez-vous de cela? Merci pour votre temps!
Merci pour la réponse, Dave. Cela semble être l'approche la plus largement adoptée. Comme dans ma réponse à la réponse de John, quelques petites choses sur cette approche me dérangent. De toute façon, je pense que je vais l'utiliser en cherchant une solution parfaite. :) – evergreen