«Подключаемый» уровень 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 {
}
(Кстати, то, что вы имеете в BasicDAO Morphia - это реализация универсального DAO для MongoDB).
Вторым моментом в подключаемой архитектуре являетсявыбор конкретной реализации DAO.Я бы посоветовал вам прочитать главу 2 из Apress: Pro Spring 2.5 («Помещение Spring в« Hello World »), чтобы постепенно узнать о фабриках и внедрении зависимостей.