sql >> Databasteknik >  >> NoSQL >> MongoDB

DAO och beroendeinjektion, råd?

Ett "pluggbart" DAO-lager är vanligtvis/alltid baserat på ett gränssnitts-DAO. Låt oss till exempel överväga en ganska generisk enkel:

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

(Det här är vad du har i Morphias generiska DAO )

Sedan kan du utveckla olika generiska DAO-implementationer, där du kan hitta olika fält (reflekteras i konstruktorparametrar, sättare och getters, etc). Låt oss anta en JDBC-baserad:

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

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

När den generiska DAO har implementerats (för en konkret databutik), skulle det vara en no brainer att få en konkret DAO:

public interface PersonDAO extends GenericDAO<Person, Long> {

}

och

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

}

(BTW, vad du har i Morphias BasicDAO är en implementering av den generiska DAO för MongoDB).

Det andra i den pluggbara arkitekturen är valet av den konkreta DAO-implementeringen. Jag skulle råda dig att läsa kapitel 2 från Apress:Pro Spring 2.5 ("Putting Spring into "Hello World") för att successivt lära sig om fabriker och beroendeinjektion.



  1. Mongodb C#-drivrutin - kan inte använda admin-autentisering för att komma åt andra databaser

  2. MongoDB-verktyg från gemenskapen som kompletterar ClusterControl

  3. MongoDB $månad

  4. Django Redis Fel okänt kommando 'BZPOPMIN'