MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

DAO et injection de dépendances, un conseil ?

Une couche DAO "enfichable" est généralement/toujours basée sur une interface DAO. Par exemple, considérons un simple assez générique :

public interface GenericDAO <T, K extends Serializable> {  
    List<T> getAll(Class<T> typeClass);   
    T findByKey(Class<T> typeClass, K id);  
    void update(T object);  
    void remove(T object);  
    void insert(T object);  
}

(Voici ce que vous avez dans DAO générique de Morphia )

Ensuite, vous pouvez développer différentes implémentations génériques de DAO, où vous pouvez trouver différents champs (reflétés dans les paramètres du constructeur, les setters et les getters, etc.). Supposons qu'il soit basé sur JDBC :

public class GenericDAOJDBCImpl<T, K extends Serializable> implements GenericDAO<T, K extends Serializable> {
    private String db_url;

    private Connection;
    private PreparedStatement insert;
    // etc.
}

Une fois le DAO générique implémenté (pour un datastore concret), obtenir un DAO concret serait une évidence :

public interface PersonDAO extends GenericDAO<Person, Long> {

}

et

public class PersonDAOJDBCImpl extends GenericDAOJDBCImpl<Person, Long> implements PersonDAO {

}

(BTW, ce que vous avez dans BasicDAO de Morphia est une implémentation du DAO générique pour MongoDB).

La deuxième chose dans l'architecture enfichable est la sélection de l'implémentation DAO concrète. Je vous conseille de lire le chapitre 2 de Apress :Pro Spring 2.5 ("Mettre Spring dans "Hello World") pour apprendre progressivement les usines et l'injection de dépendances.