MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

DAO und Abhängigkeitsinjektion, Beratung?

Eine "steckbare" DAO-Schicht basiert normalerweise/immer auf einer Schnittstellen-DAO. Betrachten wir zum Beispiel eine ziemlich generische einfache:

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

(Das haben Sie in Morphias generisches DAO )

Dann können Sie mehrere generische DAO-Implementierungen entwickeln, in denen Sie verschiedene Felder finden (wiedergegeben in Konstruktorparametern, Settern und Gettern usw.). Nehmen wir einen JDBC-basierten an:

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

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

Sobald das generische DAO (für einen konkreten Datenspeicher) implementiert ist, wäre es ein Kinderspiel, ein konkretes DAO zu erhalten:

public interface PersonDAO extends GenericDAO<Person, Long> {

}

und

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

}

(Übrigens, was Sie in Morphias BasicDAO ist eine Implementierung des generischen DAO für MongoDB).

Die zweite Sache in der steckbaren Architektur ist die Auswahl der konkreten DAO-Implementierung. Ich würde Ihnen raten, Kapitel 2 von Apress:Pro Spring 2.5 zu lesen ("Putting Spring into "Hello World"), um nach und nach etwas über Fabriken und Dependency Injection zu lernen.