sql >> Base de Datos >  >> NoSQL >> MongoDB

DAO e inyección de dependencia, ¿consejos?

Una capa DAO "conectable" generalmente/siempre se basa en una interfaz DAO. Por ejemplo, consideremos uno simple bastante genérico:

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

(Esto es lo que tienes en DAO genérico de Morphia )

Luego, puede desarrollar diferentes implementaciones DAO genéricas, donde puede encontrar diferentes campos (reflejados en los parámetros del constructor, setters y getters, etc.). Supongamos uno basado en 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 vez que se implementa el DAO genérico (para un almacén de datos concreto), obtener un DAO concreto sería pan comido:

public interface PersonDAO extends GenericDAO<Person, Long> {

}

y

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

}

(Por cierto, lo que tienes en Dao básico de Morphia es una implementación del DAO genérico para MongoDB).

Lo segundo en la arquitectura conectable es la selección de la implementación DAO concreta. Te aconsejo que leas el capítulo 2 de Apress:Pro Spring 2.5 ("Putting Spring into "Hello World") para aprender progresivamente sobre las fábricas y la inyección de dependencia.