"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í.