MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

DAO и инжектиране на зависимости, съвет?

„Плъгируем“ DAO слой обикновено/винаги е базиран на интерфейс DAO. Например, нека разгледаме един доста общ прост:

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

(Това е, което имате в Общият DAO на Morphia )

След това можете да разработите няколко различни общи DAO реализации, където можете да намерите различни полета (отразени в параметри на конструктора, сетери и гетери и т.н.). Да приемем, че е базиран на JDBC:

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

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

След като генеричният DAO бъде внедрен (за конкретно хранилище за данни), получаването на конкретно DAO би било безсмислено:

public interface PersonDAO extends GenericDAO<Person, Long> {

}

и

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

}

(BTW, какво имате в BasicDAO на Morphia е реализация на общия DAO за MongoDB).

Второто нещо в pluggable архитектурата е изборът на конкретна реализация на DAO. Бих ви посъветвал да прочетете глава 2 от Apress:Pro Spring 2.5 („Поставяне на Spring в „Hello World“), за да научите постепенно за фабриките и инжектирането на зависимости.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да създадете частичен индекс с променлива дата?

  2. Какво може да се направи с Mongo Aggregation / Изпълнение на Mongo Aggregation

  3. Метеорът поглъща огромен брой Монго връзки

  4. dropDups вярно не работи mongodb

  5. Как да ограничите изтриването в MongoDB за събиране на връзки