sql >> Databáze >  >> NoSQL >> MongoDB

DAO a injekce závislosti, rada?

"Připojitelná" vrstva DAO je obvykle/vždy založena na rozhraní DAO. Uvažujme například docela obecný jednoduchý:

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

(Toto máte v Obecné DAO Morphia )

Pak můžete vyvinout několik různých generických implementací DAO, kde můžete najít různá pole (odrážející se v parametrech konstruktoru, setterech a getterech atd.). Předpokládejme, že je založen na JDBC:

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

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

Jakmile je implementováno generické DAO (pro konkrétní datové úložiště), získání konkrétního DAO by bylo zbytečné:

public interface PersonDAO extends GenericDAO<Person, Long> {

}

a

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

}

(BTW, co máte v Základní DAO Morphie je implementace generického DAO pro MongoDB).

Druhá věc v pluggable architektuře je výběr konkrétní implementace DAO. Doporučil bych vám přečíst si kapitolu 2 z Apress:Pro Spring 2.5 („Putting Spring into „Hello World“), abyste se postupně dozvěděli o továrnách a vstřikování závislostí.



  1. Jak exportovat seřazená data pomocí mongoexportu?

  2. Je připojení k MongoDB automaticky uzavřeno na process.exit()?

  3. Mongo URI s vlastnoručně podepsaným certifikátem

  4. Jak přejmenovat název pole v Spring-mongodb při vkládání dat?