Les inconvénients potentiels de l`utilisation de DAO incluent l`abstraction qui fuit, la duplication de code [citation nécessaire] et l`inversion d`abstraction. En particulier, l`abstraction du DAO en tant qu`objet Java normal peut masquer le coût élevé de chaque accès à la base de données, et peut également forcer les développeurs à déclencher plusieurs requêtes de base de données pour récupérer des informations qui pourraient autrement être retournées en une seule opération à l`aide Opérations de jeu SQL. Si une application requiert plusieurs DAOs, on pourrait se retrouver à répéter essentiellement le même code de création, de lecture, de mise à jour et de suppression pour chaque DAO. Ce code de chaudière-plaque peut toutefois être évité, en implémentant un DAO générique qui gère ces opérations courantes. [2] dans le contexte général du langage de programmation Java, les objets d`accès aux données en tant que concept de conception peuvent être implémentés de plusieurs façons. Cela peut aller d`une interface assez simple qui sépare les parties d`accès aux données de la logique d`application, aux frameworks et aux produits commerciaux. Les paradigmes de codage DAO peuvent nécessiter une certaine habileté. Les technologies telles que Java Persistence API et Enterprise JavaBeans sont intégrées dans les serveurs d`applications et peuvent être utilisées dans les applications qui utilisent un serveur d`applications JavaEE. Les produits commerciaux tels que TopLink sont disponibles en fonction du mappage objet-relationnel (ORM). Les logiciels d`ORM Open source populaires incluent les implémentations de doctrine, Hibernate, iBATIS et JPA telles qu`Apache OpenJPA. Pour une explication détaillée sur la façon de bootstrap une implémentation JPA avec Java, s`il vous plaît vérifier cet article. POJO également considérer comme classe de modèle en Java où nous pouvons créer getter et setter pour une variable particulière définie en privé. Rappelez-vous que toutes les variables sont ici déclarées avec le modificateur privé objet ou objet de valeur-cet objet est POJO simple contenant des méthodes get/set pour stocker les données récupérées à l`aide de la classe DAO.

J`ai vu différents arguments contre le DAO étant appelé à partir de la classe Controller directement et aussi le DAO de la Model classe. Infact je pense personnellement que si nous sommes en suivant le modèle MVC, le contrôleur ne doit pas couplé avec le DAO, mais la classe Model doit appeler le DAO à partir de l`intérieur et le contrôleur doit appeler la classe de modèle. Pourquoi parce que, nous pouvons découpler la classe de modèle en dehors d`une application Web et exposer les fonctionnalités de différentes façons comme pour un service REST d`utiliser notre classe de modèle. Dans cet article, nous avons pris un regard approfondi sur les concepts clés du modèle DAO, comment l`implémenter en Java, et comment l`utiliser au-dessus du gestionnaire d`entités de JPA.