Présentation du module spring DAO

L’objectif de cet article est d'expliquer le principe du module spring DAO.

Principe du module spring DAO 

Le principe de spring DAO consiste à faire une abstraction par rapport à la méthode d’accès à la base de données (framework de mapping, jdbc …) en offrant un système de management des transactions et d’accès aux données et une hiérarchie d’exceptions génériques.
Spring devise le processus de manipulation des données en deux parties : une partie invariable  ou commune pour toutes les technologies tels que l’ouverture et la fermeture de la connexion … et une partie variable ou spécifique à chaque technologie tels que la méthode d’exécuter une requête, la récupération du résultat … En se basant sur cette séparation spring définit deux classes : Template et callback qui se chargent respectivement de l’implémentation de la partie fixe et de la partie variable.
Le schéma ci-dessous définit les responsabilités de chaque classe.

springdao

Pour simplifier l’utilisation des classes Template et callback, certaines méthodes  spécifiques aux framework sont implantées par les Templates spécifiques à chaque framework, ce qui permet de les utiliser sans passer par le callback, exemple la méthode update de la classe JdbcTemplate.

Pour accéder aux Templates (JdbcTemplate, HibernateTemplate, JdoTemplate et JpaTemplate), Spring dispose des classes DAO Support, il suffit que les dao de l’application hérite d’un DAO Support pour accéder au Template spécifique exemple pour accéder à HibenateTemplate il suffit que ton dao hérite de la classe HibenateDaoSupport et ensuite utiliser la méthode getHibernateTemplate().

Le schéma ci-dessous explique la relation entre les différentes classes utilisées.

daosupport

Exemple : JdbcTemplate

Pour utiliser jdbc, prenant par exemple le cas d’insertion des données, la méthode doit, obligatoirement, déclarer les ressources, ouvrir la connexion, créer la requête et l’exécuter et en fin gérer les exception. L’exemple ci-dessous montre un exemple d’utilisation du jdbc en cas d’insertion de données.

jdbc_code

Nous allons voir maintenant comment en utilisant spring DAO l’exemple précèdent sera simplifié, le code précèdent sera réduit au code ci dessous :

jdbcTemplate_code

Donc, comme nous avons vu précédemment, en utilisant jdbcTemplate, seulement la partie variable sera implémentée  (la création des requêtes qui dépend de la technologie utilisée), spring DAO se charge de la partie invariable.

Conclusion

Dans cet article nous avons vu comment Spring DAO permet de simplifier et standardiser l’accées à la base de données en faisant abstraction aux technologies utilisées pour accéder et manipuler les données. Mais spring DAO n’est pas la seule solution présentée par spring pour accéder à la BD, il dispose aussi du module spring ORM comme solution pour accéder et manipuler les données.

Références:                                                                                                                                
Spring in action Craig Walls & Ryan Breidenbach
http://static.springframework.org/spring/docs/2.0.x/reference/dao.html