MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

DAO e iniezione di dipendenza, consigli?

Un livello DAO "collegabile" è solitamente/sempre basato su un'interfaccia DAO. Ad esempio, consideriamo un semplice abbastanza generico:

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);  
}

(Questo è ciò che hai in DAO generico di Morphia )

Quindi puoi sviluppare diverse implementazioni DAO generiche, dove puoi trovare campi diversi (riflessi nei parametri del costruttore, setter e getter, ecc.). Assumiamo uno basato su JDBC:

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

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

Una volta implementato il DAO generico (per un datastore concreto), ottenere un DAO concreto sarebbe un gioco da ragazzi:

public interface PersonDAO extends GenericDAO<Person, Long> {

}

e

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

}

(A proposito, cosa hai in BasicDAO di Morphia è un'implementazione del DAO generico per MongoDB).

La seconda cosa nell'architettura pluggable è la selezione dell'implementazione DAO concreta. Ti consiglio di leggere il capitolo 2 di Apress:Pro Spring 2.5 ("Putting Spring into "Hello World") per conoscere progressivamente le fabbriche e l'iniezione di dipendenza.